请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

DelegatingPasswordEncoder采用非 bcrypt 加密后存入 DB 后 的格式

这种 encoder 在将密码 存入数据库的时候 会不会带上算法的 prefix… 比如数据库里看到的是 {md5}xxxxx 还是 xxxx呢. 如果存入 db 的时候带了前缀, 比较时就会很高效, 不用把所有的算法全部循环一遍.

正在回答 回答被采纳积分+3

2回答

提问者 cyper 2023-03-28 10:02:28

我试了一下使用 DelegatingPasswordEncoder, 存入表中的密码都必须加上算法前缀, 不然 match 时会提示找不到null 这种算法, 类似: `There is no PasswordEncoder mapped for the id "null"`

示例:

PasswordEncoder passwordEncoder=PasswordEncoderFactories.createDelegatingPasswordEncoder();
String hash =  MD5Utils.md5Hex("12345".getBytes());
System.out.println(hash);
// match 时必须显式地给密文加上算法前缀
boolean b= passwordEncoder.matches("12345", "{MD5}" + hash);
System.out.println("b = " + b);

1 回复 有任何疑惑可以回复我~
oldA2023 2023-03-28 14:04:00

遍历所有密码类型比较,是为了适配有一些老项目采用了不同的加密方式,无法全部修改的情况下,进行的一些适配,默认的话可以搜索类PasswordEncoderFactories,查询默认支持的11中密码加解密类型,以及默认的bcrypt类型

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号