因为 Spring 弃用了旧接口
org.springframework.security.crypto.password.PasswordEncoder;
我寻找了适用的替代品
org.springframework.security.authentication.encoding.PasswordEncoder;
我的搜索指向:https ://stackoverflow.com/a/18678325
我测试了 bcrypt,我对它的工作原理很感兴趣。
https://stackoverflow.com/a/6833165上的解释指出了一个问题。
如果$2a$10$ZaDBCZaI59IMdKuBiRdubuMa2h/itIYIwqLHpS1q245ISD90xsjkW
包含有关编码类型和盐等的所有信息,并且存储在我的数据库中,为什么要保存?如果有人有这个“哈希”,他可以很容易地用暴力破解它。
在我之前的项目中,我使用了带有系统范围秘密盐的 SHA 编码。在这种情况下,从数据库中窃取的哈希值不容易被解密。
那么为什么 bcrypt 比具有系统范围盐的 SHA 更受欢迎呢?