Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 我应该更喜欢输出更长的哈希算法来存储密码吗?_Security_Database Design_Hash_Sha256_Sha512 - Fatal编程技术网

Security 我应该更喜欢输出更长的哈希算法来存储密码吗?

Security 我应该更喜欢输出更长的哈希算法来存储密码吗?,security,database-design,hash,sha256,sha512,Security,Database Design,Hash,Sha256,Sha512,我正在建立一个安全性有点重要的网站(那么,什么时候不重要?),我正在寻找存储密码的最佳方法。我知道MD5和SHA-1都存在冲突问题,所以我想通过SHA-256或SHA-512存储密码 存储较长的散列变量比存储较小的散列变量更明智吗?(即512 vs 256)破解SHA-512编码的密码比破解SHA-256编码的密码需要更多的时间吗 另外,我也读过关于使用“盐”作为密码的文章。这是什么?它是如何工作的?我是否只是将salt值存储在另一个数据库字段中?如何将其用作哈希值计算的一部分 冲突在您的场景中

我正在建立一个安全性有点重要的网站(那么,什么时候不重要?),我正在寻找存储密码的最佳方法。我知道MD5和SHA-1都存在冲突问题,所以我想通过SHA-256或SHA-512存储密码

存储较长的散列变量比存储较小的散列变量更明智吗?(即512 vs 256)破解SHA-512编码的密码比破解SHA-256编码的密码需要更多的时间吗


另外,我也读过关于使用“盐”作为密码的文章。这是什么?它是如何工作的?我是否只是将salt值存储在另一个数据库字段中?如何将其用作哈希值计算的一部分

冲突在您的场景中不相关,因此MD5的弱点不相关。然而,最重要的是使用需要很长时间计算的哈希。读和写(即使不使用Java,这些技术仍然有效)


在任何情况下,我都不会使用MD5,因为还有其他哈希也可以执行。

冲突在您的场景中是不相关的,所以MD5的弱点是不相关的。然而,最重要的是使用需要很长时间计算的哈希。读和写(即使不使用Java,这些技术仍然有效)


在任何情况下,我都不会使用MD5,因为还有其他哈希函数也可以执行同样的操作。

对于密码存储,您需要的不仅仅是一个哈希函数;你需要:

  • 非常慢的散列函数(因此暴力攻击更加困难)
  • 和salt:一个公共已知值,存储在散列中,每个散列密码都不同,并输入密码散列过程。salt可防止攻击者有效地攻击多个密码(例如,使用预计算的哈希表)
所以你需要


对于散列输出大小:如果该大小为n位,则n应使得攻击者无法实际计算2n次散列函数;80位就足够了。因此,128位的输出已经过杀。您仍然不想使用MD5,因为它太快了(尽管100000次MD5嵌套调用可能足够慢),而且在MD5中发现了一些结构性缺陷,这些缺陷不会直接影响其密码散列的安全性,但仍然是不好的公共关系。无论如何,您应该使用bcrypt,而不是自制的结构。

对于密码存储,您需要的不仅仅是散列函数;你需要:

  • 非常慢的散列函数(因此暴力攻击更加困难)
  • 和salt:一个公共已知值,存储在散列中,每个散列密码都不同,并输入密码散列过程。salt可防止攻击者有效地攻击多个密码(例如,使用预计算的哈希表)
所以你需要


对于散列输出大小:如果该大小为n位,则n应使得攻击者无法实际计算2n次散列函数;80位就足够了。因此,128位的输出已经过杀。您仍然不想使用MD5,因为它太快了(尽管100000次MD5嵌套调用可能足够慢),而且在MD5中发现了一些结构性缺陷,这些缺陷不会直接影响其密码散列的安全性,但仍然是不好的公共关系。无论如何,你应该使用bcrypt,而不是自制的结构。

这里的一些答案给了你一些可疑的建议。我建议你去搜索“密码哈希”。您将发现许多建议,其中许多建议已经过安全堆栈交换人员的仔细审查。或者,你可以听听@Thomas Pornin,他知道他在说什么。

这里的一些答案给了你一些可疑的建议。我建议你去搜索“密码哈希”。您将发现许多建议,其中许多建议已经过安全堆栈交换人员的仔细审查。或者,你可以听听@Thomas Pornin,他知道他在说什么。

MD5在今天的标准中有点太弱了。有一些预先制作好的彩虹表,你可以把手放在上面,在散列函数中找到给定图像的源并不难(由于算法错误)。我不会用它来做密码,因为其他的事情我肯定会用,这取决于我的目标。是的,我和每个人都建议如果可能的话远离MD5。我使用它来检查文件内容,但在其他情况下,我总是听说如果可能的话使用SHA-1,如果可能的话使用SHA-2。@TCS“在哈希函数中找到给定图像的源还不够难”:你是说存在前图像攻击。您是否有支持此的来源?MD5不好:它太快了。在当今的标准中,MD5有点太弱了。有一些预先制作好的彩虹表,你可以把手放在上面,在散列函数中找到给定图像的源并不难(由于算法错误)。我不会用它来做密码,因为其他的事情我肯定会用,这取决于我的目标。是的,我和每个人都建议如果可能的话远离MD5。我使用它来检查文件内容,但在其他情况下,我总是听说如果可能的话使用SHA-1,如果可能的话使用SHA-2。@TCS“在哈希函数中找到给定图像的源还不够难”:你是说存在前图像攻击。您是否有此备份的来源?MD5不好:速度太快。此问题已在it安全堆栈交换上详细询问和回答。请转到it安全堆栈交换并搜索“密码哈希”。这大约需要30秒。这个问题在IT安全堆栈交换上已经被详细地询问和回答了。