Jasypt的StrongPasswordEncryptor是否因其选择算法而存在根本缺陷?

时间:2014-11-28 14:53:35

标签: java security password-encryption jasypt

良好的经验法则:如果您需要加密,请不要自己动手。你会弄错的!

到目前为止一切顺利。因为这个原因我正在看Jasypt。它声称要为你做所有复杂的事情,而不需要你理解它。它为您提供了一个值得信赖的名称StrongPasswordEncryptor

的课程
  

用于轻松执行高强度密码摘要和检查的实用程序类。

在我相信我的用户密码之前,我仍然想知道它的作用。正如它在API中所声称的那样:

  

此类内部包含以这种方式配置的StandardStringDigester:

     
      
  • 算法:SHA-256。
  •   
  • 盐大小:16个字节。
  •   
  • 迭代次数:100000。
  •   

这是我对该主题的基本知识告诉我:那不是你应该怎么做的!

事实上,它看起来像一个天真的方法。拿SHA,因为MD5不再安全,但更好的是拿一个更大的数字,因为那里更大更好。但是那里有多个字节的盐,然后运行很多次以便更难破解。

为什么我认为这很糟糕? SHA基本上是一种精心设计的校验位。它意味着快速。这与您想要的密码散列算法相反。您希望这些产品在成本较高的硬件上具有成本扩展性。事实上,在网络上有很多讨论,好的bcrypt和PBKDF2缺乏一些重要的要求,如果应该使用scrpyt。查看这些stackexchange问​​题以获得一个想法:https://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storageSHA512 vs. Blowfish and Bcrypt

http://www.jasypt.org/howtoencryptuserpasswords.html

提供引用
  

在大多数情况下, MD5或SHA-1都可以作为密码摘要的适当选择,尽管应用这些算法是不够的,我们稍后会看到。

由于上述原因,我在这一点上激情不同意。

我在这里遗漏了什么,或者Jasypt真的在名称StrongPasswordEncryptor下向我推销了一个根本上有缺陷的算法?因为如果确实如此,我不想用最敏感的数据来信任该库。

我知道,我可以决定不使用它,但是由于我在开始时提到的经验法则,我希望能够通过密码加密理解我的评估。

0 个答案:

没有答案