bcrypt如何保存?

时间:2013-11-11 10:20:41

标签: spring-security bcrypt sha

因为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的SHA?

1 个答案:

答案 0 :(得分:0)

2分:

  1. Bcrypt旨在通过具有可配置的复杂性来抵抗暴力攻击,这使得该过程任意慢。有关详细信息,请参阅wikipedia
  2. 对于所有密码使用相同的哈希,就像现有系统一样,可能容易受到差异攻击,因为已知数据库中的每个密码都包含一个共享组件。