加盐加密——保障你的数据安全

这篇具有很好参考价值的文章主要介绍了加盐加密——保障你的数据安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

加盐加密——保障你的数据安全今日良言:理性和激情是生活不可或缺的调味品

加盐加密——保障你的数据安全一、加盐加密

加盐加密——保障你的数据安全1.普通密码的缺点

加盐加密——保障你的数据安全2.什么是加盐加密

加盐加密——保障你的数据安全3.加盐加密的过程

加盐加密——保障你的数据安全4.加盐加密的实现


今日良言:理性和激情是生活不可或缺的调味品

加盐加密——保障你的数据安全

一、加盐加密

1.普通密码的缺点

在介绍加盐加密之前,先想想为什么普通密码的缺点是什么?

普通的密码不安全是因为它们通常很容易被猜到或破解。一个简单的密码可能只包含数字、字母或符号中的几个,这使得攻击者可以通过暴力破解或字典攻击来尝试猜测密码。此外,如果用户使用相同的密码来保护多个账户,那么一旦其中一个账户被攻破,攻击者就可以访问所有受影响的账户。

 密码安全的重要性不言而喻,所以说,如何提高用户密码的安全性就值得关注了。

通过加盐加密就可以提高密码的安全性。

2.什么是加盐加密

简单介绍一下什么是加盐加密:

密码加盐是一种增强密码安全性的方法,它将用户输入的明文密码与一个随机生成的字符串(称为盐)进行组合,形成一个新的密文密码。这个新的密文密码可以存储在数据库中,以便后续验证用户身份时使用。当用户输入密码时,应用程序会将密码与盐进行组合,然后再使用该组合来计算哈希值或摘要值。这样即使攻击者获取了加密后的密码,也无法直接还原出原始的明文密码。因为攻击者必须先破解哈希值或摘要值才能获取原始的密码。通过使用密码加盐技术,可以有效地提高密码的安全性,避免因为密码泄露而导致的安全问题。

 虽然进行加盐加密以后,密码安全性会提高,但是密码也不是绝对安全的,但是随着密码安全性的提高,破解成本也会提高,所以使用加盐加密还是非常有必要的。

3.加盐加密的过程

加盐加密的过程简单来说,可以分为以下三步:

1).用户输入明文密码,生成随机盐值。

2).使用md5,通过明文密码+盐值生成最终密码。

3).将随机盐值+自定义拼接规则+ 最终密码存入数据库。

加盐解密的过程简单来说,可以分为以下四步:

1).输入待检验的密码和数据库中的最终密码。

2).先进行参数检验。

3).通过自定义拼接规则,将最终密码分割成两部分(随机盐值+明文密码)。

4).验证分割得到的明文密码和待检验的密码是否相等。

4.加盐加密的实现

加盐加密和加盐解密的代码如下:

  /**
     * 加盐加密
     * @param password  初始密码
     * @return          加盐密码
     */
    public static String encrypt(String password) {
     // 1.生成随机盐值
        // 通过UUID生成唯一的数字作为随机盐值
        String salt = UUID.randomUUID().toString().replace("-","");// 顺便去掉 -
        // 2.根据初始密码 和 随机盐值 通过md5生成 加盐加密的密码      
        // StandardCharsets.UTF_8  设置编码格式
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 3.将盐值 和 加盐加密得到的密码一起返回(合并盐值和加盐密码)
        return salt +"$"+finalPassword;
    }
    /**
     * 加盐加密的方法重载
     * @param password  初始密码
     * @return          加盐密码
     */
    public static String encrypt(String password,String salt) {

        // 2.根据初始密码 和 随机盐值 通过md5生成 加盐加密的密码
        String finalPassword = DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        // 3.将盐值 和 加盐加密得到的密码一起返回(合并盐值和加盐密码)
        // 这里的"$"是自定义的拼接规则,用于区分随机盐值和明文密码
        return salt +"$"+finalPassword;
    }
    /**
     * 加盐解密
     * @param password  初始密码
     * @param dbPassword 数据库中的密码
     * @return
     */
    public static boolean decrypt(String password,String dbPassword) {
        // 先进行参数判断
        // StringUtils.hasLength() 是Spring提供的可以判断传入的字符串是否为空和长度是否为0
        // 判端长度是否为65是因为:随机盐值是32位,通过md5生成的密码也是32位 $ 长度1位
        if (StringUtils.hasLength(password) && StringUtils.hasLength(dbPassword)
        && dbPassword.length() == 65 && dbPassword.contains("$")) {
            // 分割数据库中的密码
            String[] arr = dbPassword.split("\\$");
            // 得到盐值
            String salt = arr[0];
            // 将盐值和初始密码传入重载的加盐加密的方法,生成新的密码
            String finalPassword = encrypt(password,salt);
            // 比较待验证的密码和明文密码是否相等
            if (finalPassword.equals(dbPassword)) {
                return true;
            }
        }
        return false;
    }

效果展示:

首先原始密码是:123456.

然后将原始密码通过加盐加密,然后输入一个待验证的密码,进行比较:

密码输入错误,验证的代码:

加盐加密——保障你的数据安全

输出结果:

加盐加密——保障你的数据安全

密码输入正确,输出结果:

加盐加密——保障你的数据安全

使用 Spring Security也可以进行加盐加密和解密

 Spring Security 是一个基于 Spring 框架的安全性解决方案,它提供了一套完整的安全机制和 API,用于保护 Web 应用程序。Spring Security 可以帮助开发人员管理用户身份验证、授权和加密,以及防止跨站点请求伪造(CSRF)攻击等常见的 Web 安全问题。

 具体步骤如下:

1).添加Sping Security 框架

加盐加密——保障你的数据安全

 将Spring Security 框架添加到项目中以后,此时启动项目,会发现,项目启动失败,并且出现一个登录界面,如下图:

加盐加密——保障你的数据安全

 这是因为,当添加 Spring Security 框架以后,会为当前项目添加上用户的认证和授权,此时就会跳转到 Spring Security 自己提供的登录页面。在控制台会提供用户名和密码帮助登录:

加盐加密——保障你的数据安全

 2).关闭Spring Security 认证

在SpingBoot 项目的启动类上添加如下注解,关闭Spring Security 自动的类加载:

 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

加盐加密——保障你的数据安全

 3).实现加盐加密和加盐解密的代码:

public class Exercise {
    public static void main(String[] args) {
        // 首先创建一个 对象
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String pw1 = "123456";
        // 通过 encode 方法实现加盐加密
        String finalPassword = passwordEncoder.encode(pw1);
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要验证的密码");
        String ret = scanner.next();
        // 通过matches 方法传入原始密码和加盐加密的到的密码进行比较
        if (passwordEncoder.matches(ret,finalPassword)) {
            System.out.println("密码正确");
        } else {
            System.out.println("密码错误");
        }
    }
}

输入错误密码进行验证,结果如下:

加盐加密——保障你的数据安全

输入正确密码进行验证,结果如下:

加盐加密——保障你的数据安全 文章来源地址https://www.toymoban.com/news/detail-464273.html

到了这里,关于加盐加密——保障你的数据安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 你还在怕忘记网盘密码?商鼎云助记词登录保障你的安全

    大家对网盘都不陌生,我们日常会用它来备份文件、存放电影。但是你知道吗?在某搜索引擎下输入网盘密码,最先出来的竟然是「网盘密码怎么样 破解 」、「网盘密码 忘了 怎么打开」。 同样的问题我们输入云存储密码,却发现相对于网盘用户,使用云存储的用户大部分

    2023年04月08日
    浏览(41)
  • 密码加密——加盐算法(两种方式)

    密码安全是一件很重要的事情,所以一定要谨慎对待 常见的主要是3种方式 明文 MD5加密 加盐算法 首先明文肯定是不可取的,在数据库中明文存储密码风险实在是太大了 简单来说,使用MD5就是将一串字符串通过某特定的算法来将其变成另一种形式,这样子就在外观上起到了加

    2023年04月12日
    浏览(27)
  • 软考:中级软件设计师:邮件加密系统,网络安全保障,网络威胁与攻击,防火墙技术

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月08日
    浏览(36)
  • 手写一个加盐加密算法(java实现)

    目录 前言  什么是MD5??  加盐算法 那别的人会不会跟你得到相同的UUID?  如何使用盐加密? 代码实现         对于我们常见的登录的时候需要用到的组件,加密是一个必不可少的东西,如果我们往数据库存放用户的密码,是直接以明文存储的话,那么数据被窃取的时

    2024年01月17日
    浏览(32)
  • Python MD5加密的三种方法(可加盐)

    输出结果: 输出结果: 输出结果: (参考文章:https://blog.csdn.net/xuefeng_210/article/details/123112339)

    2024年02月14日
    浏览(41)
  • 密码如何“加盐加密”处理?程序员一定要掌握的知识

    目录 前言 一、手写加盐算法 1.1、加密 1.1.1、加密思路 1.1.2、加密简图 1.1.3、代码实现 1.2、解密 1.2.1、解密思路 1.2.2、解密代码 1.3、验证 二、使用 Spring Security 框架实现加盐算法 为什么要使用加盐的方式对密码进行加密?我们知道传统的 md5 加密方式是可以通过 “彩虹表”

    2024年02月16日
    浏览(36)
  • Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。 那么我们就需要对这些铭文进行加密。 现在市场是加密的方式已经

    2024年02月02日
    浏览(31)
  • 揭秘 HTTPS 加密协议:保护你的网上安全之道

    在当今数字化时代,隐私和安全变得尤为重要。本博客将带你深入了解 HTTPS 加密协议,它是如何通过加密通信、验证身份和保护数据完整性来确保你在互联网上的安全与隐私。 1、 互联网安全的重要性 在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。然而

    2024年02月04日
    浏览(37)
  • 保护你的CANoe项目:CAPL文件加密与安全实践

    ✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🔗 专栏地址:Vector-CAPL 自动化探索

    2024年02月12日
    浏览(31)
  • Spring Boot进阶(44):如何为你的项目开启HTTPS协议加密传输,让你的网站更加安全?

            随着互联网的发展,网络安全问题越来越引人关注。为了确保网站数据传输的安全性,大多数网站都选择使用HTTPS协议进行加密传输。而本篇文章就将带领大家,一步一步地了解如何为你的项目开启HTTPS协议,让你的网站更加安全可靠。不仅如此,我们还会介绍HTTPS协

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包