博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring security 中解密时如何解密的?
阅读量:7021 次
发布时间:2019-06-28

本文共 1464 字,大约阅读时间需要 4 分钟。

[是无法将加密后的密文解密成明文只能通过
bcryptPasswordEncoder.matches("admin",hashPass);来比较密码是否正确]

参考来源:https://www.zhihu.com/question/54720851

spring security 中PasswordEncoder的加密是采用SHA-256+随机盐+密钥进行加密,那解密时如何解密的?

学习到这一块,查看了一些源码。以BCryptPasswordEncoder为例

public class BCryptPasswordEncoderTest {    public static void main(String[] args) {        String pass = "admin";        BCryptPasswordEncoder bcryptPasswordEncoder = new BCryptPasswordEncoder();        String hashPass = bcryptPasswordEncoder.encode(pass);        System.out.println(hashPass);        boolean f = bcryptPasswordEncoder.matches("admin",hashPass);        System.out.println(f);    }}复制代码

可以看到,每次输出的hashPass 都不一样,

但是最终的f都为 true,即匹配成功。

查看代码,可以看到,其实每次的随机盐,都保存在hashPass中。

在进行matchs进行比较时,调用BCrypt 的String hashpw(String password, String salt)

方法。两个参数即”admin“和 hashPass

//******BCrypt.java******salt即取出要比较的DB中的密码*******real_salt = salt.substring(off + 3, off + 25);try {// ***************************************************    passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("UTF-8");}catch (UnsupportedEncodingException uee) {}saltb = decode_base64(real_salt, BCRYPT_SALT_LEN);B = new BCrypt();hashed = B.crypt_raw(passwordb, saltb, rounds);复制代码

假定一次hashPass为:$2a$10$AxafsyVqK51p.s9WAEYWYeIY9TKEoG83LTEOSB3KUkoLtGsBKhCwe

随机盐即为 AxafsyVqK51p.s9WAEYWYe

(salt = BCrypt.gensalt();中有描述)

可见,随机盐(AxafsyVqK51p.s9WAEYWYe),会在比较的时候,重新被取出。

即,加密的hashPass中,前部分已经包含了盐信息。

转载于:https://juejin.im/post/5c74e121f265da2de6611374

你可能感兴趣的文章
SQL:创建某一时间段内的周末日期表以及特殊处理日期表
查看>>
什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?(转)
查看>>
LindAgile.SchedulingTask~设计一个不错的任务调度组件
查看>>
恶搞之手机垃圾信息发送器 手机短信骚扰器
查看>>
mysql replication之binlog-do-db、binlog-ignore-db
查看>>
Date类型和Long类型的相互转换
查看>>
XMPP协议
查看>>
CSS:给 input 中 type="text" 设置CSS样式
查看>>
Softmax函数
查看>>
hdu4462 Scaring the Birds
查看>>
设计中的道理_6
查看>>
MFC——AfxParseURL用法
查看>>
关于综合布线系统线缆挑选方法
查看>>
面向过程,面向对象,函数式对同一个问题的思考方式
查看>>
盘点:抵御网络攻击哪国强?世界20强国排名
查看>>
混合“白+黑”名单方法是如何帮助企业加强安全的?
查看>>
中国网速竟不到泰国一半、香港的1/4!名副其实"华囧"
查看>>
4G和5G不配物联网 不过死撑
查看>>
SAP宣布将投资22亿美元发展物联网业务
查看>>
他用10年前的攻击手法感染了17000多名开发者的电脑
查看>>