浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
2017-09-19 16:28
309 查看
浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches)
spring security中的BCryptPasswordEncoder方法采用SHA-256 +随机盐+密钥对密码进行加密。SHA系列是Hash算法,不是加密算法,使用加密算法意味着可以解密(这个与编码/解码一样),但是采用Hash处理,其过程是不可逆的。
(1)加密(encode):注册用户时,使用SHA-256+随机盐+密钥把用户输入的密码进行hash处理,得到密码的hash值,然后将其存入数据库中。
(2)密码匹配(matches):用户登录时,密码匹配阶段并没有进行密码解密(因为密码经过Hash处理,是不可逆的),而是使用相同的算法把用户输入的密码进行hash处理,得到密码的hash值,然后将其与从数据库中查询到的密码hash值进行比较。如果两者相同,说明用户输入的密码正确。
这正是为什么处理密码时要用hash算法,而不用加密算法。因为这样处理即使数据库泄漏,黑客也很难破解密码(破解密码只能用彩虹表)。
参考文献:点击打开链接
spring security中的BCryptPasswordEncoder方法采用SHA-256 +随机盐+密钥对密码进行加密。SHA系列是Hash算法,不是加密算法,使用加密算法意味着可以解密(这个与编码/解码一样),但是采用Hash处理,其过程是不可逆的。
(1)加密(encode):注册用户时,使用SHA-256+随机盐+密钥把用户输入的密码进行hash处理,得到密码的hash值,然后将其存入数据库中。
(2)密码匹配(matches):用户登录时,密码匹配阶段并没有进行密码解密(因为密码经过Hash处理,是不可逆的),而是使用相同的算法把用户输入的密码进行hash处理,得到密码的hash值,然后将其与从数据库中查询到的密码hash值进行比较。如果两者相同,说明用户输入的密码正确。
这正是为什么处理密码时要用hash算法,而不用加密算法。因为这样处理即使数据库泄漏,黑客也很难破解密码(破解密码只能用彩虹表)。
参考文献:点击打开链接
相关文章推荐
- Spring Security笔记:使用BCrypt算法加密存储登录密码
- Express下采用bcryptjs进行密码加密的方法
- access2007、2010设置密码,提示“使用分组加密进行加密与行级别锁定不兼容。行级别锁定将被忽略。”的解决方法
- 数据采集-关于密码使用js脚本进行rsa方式加密的解决方法
- 使用bcrypt进行用户密码加密的简单实现
- access2007、2010设置密码,提示“使用分组加密进行加密与行级别锁定不兼容。行级别锁定将被忽略。”的解决方法
- 在rails中使用bcrypt进行密码的加密
- spring security 3中推荐使用BCrypt算法加密密码
- Spring Security笔记:使用BCrypt算法加密存储登录密码
- 使用异或进行简单的密码加密(JAVA实现)
- PHP使用DES进行加密与解密的方法详解
- 使用Apache Shiro进行身份认证-密码加密
- 使用MD5对密码进行加密
- 使用kettle转换中的JavaScript对密码进行加密和解密
- 使用Dotfuscator 进行.Net代码混淆 代码加密的方法
- 使用hashlib库对用户密码进行加密处理
- JavaScript使用RegExp进行正则匹配的方法
- JavaScript使用RegExp进行正则匹配的方法
- 使用MD5对密码进行加密的功能的实现
- java中使用数组进行模拟加密的方法