Security 双重MD5哈希作为盐?

Security 双重MD5哈希作为盐?,security,hash,md5,Security,Hash,Md5,可能重复: 好吧,我想用md5对密码进行双重哈希(例如,对密码进行哈希,然后对密码进行哈希)。我想知道是否有人用这种方法遇到过任何问题,你是否认为这是一种很好的加盐方法。谢谢MD5破裂了。不管你对散列进行了多少次重放,它绝对不会增加更多的安全性 不,这不是给东西加盐的好方法 添加密码意味着向原始密码添加额外的数据,然后对结果进行散列 您应该使用加密随机数生成器生成至少256位的salt,将其添加到原始密码中,然后使用未被破解的哈希,即SHA-512。I disrecommend哈希两次 您可能

可能重复:


好吧,我想用md5对密码进行双重哈希(例如,对密码进行哈希,然后对密码进行哈希)。我想知道是否有人用这种方法遇到过任何问题,你是否认为这是一种很好的加盐方法。谢谢

MD5破裂了。不管你对散列进行了多少次重放,它绝对不会增加更多的安全性

不,这不是给东西加盐的好方法

添加密码意味着向原始密码添加额外的数据,然后对结果进行散列


您应该使用加密随机数生成器生成至少256位的salt,将其添加到原始密码中,然后使用未被破解的哈希,即SHA-512。

I disrecommend哈希两次

您可能会丢失一些密码散列,使您的代码更加不安全。这无助于安全

最好的方法是在密码中加盐,然后散列一次


salt的目的是使使用预先计算的表强制执行短密码变得更加困难。你可以让盐用户依赖。

首先,MD5被严重破坏-不使用,考虑像SHA256之类的东西。



第二,盐渍是完全不同的——拥有一个
hash(hash(password))
不会给你带来任何安全性的提高。请参阅下面的进一步讨论:

MD5已被破坏-到目前为止,使用SHA2哈希。通过在迭代中使用salt和hash可以改进哈希,这将保护您免受字典和rainbow表攻击。

MD5是一个哈希函数,而不是加密函数。您可以解密加密邮件,但不能“取消”哈希。您想使用哈希做什么?如何正确使用哈希函数在很大程度上取决于它的用途。但哈希两次永远不能代替盐。特别是对于密码散列,不应使用普通散列函数,无论是md5还是其他更新的函数。md5不是加密的一种形式,而是消息摘要函数。对不起,各位,我无意中说了加密,我使用了散列。请停止发布MD5不用于加密的消息,谢谢:)MD5没有以这种方式被破坏,这对于密码哈希是无用的。它对于文件散列是无用的,因为用相同的散列创建邪恶的文件相对容易。@Rok Kralj:哦,当然它是以这种方式被破坏的,并且已经有一段时间了(这确实使得它对于密码散列是无用的)。例如,请参见“如果你不相信我:”概述:MD5算法中的弱点允许输出冲突。因此,攻击者可以生成加密令牌或其他非法显示为真实的数据。“这对任何事情都没有用处,包括文件哈希和加密。对于需要抗冲突的应用程序,md5已被破坏。但是密码散列不是其中之一。普通md5对于密码散列仍然不好,但普通sha-2几乎同样不好,因为两者都很快。请引用md5的(实际)弱点适用于密码哈希的引用。据我所知,对md5没有实际的映像前攻击。看,@Piskvor@CodeInChaos搞定了!:)“aka”是“也称为”的缩写,从某种意义上说,SHA-512是典型的哈希函数,是唯一的选择。对于密码哈希,普通SHA2和普通md5一样错误。对于md5被破坏的大多数散列方案,不需要salt。SHA-2是一组散列函数(SHA-224、SHA-256、SHA-384、SHA-512)这远远好于MD5和AFAIK美国政府从2011年开始建议使用SHA-2,因此我在评论中添加了建议,使用SHA-2是安全的。对于许多用途,使用普通SHA-2是正确的选择。但不适用于密码哈希。为此,您应该使用类似PBKDF2、bcrypt或scrypt的命令。原因是SHA-2的设计速度很快,但密码哈希应该很慢,以减缓暴力攻击。是的。。是的-但是添加强盐会使蛮力攻击更加困难…盐对蛮力攻击的唯一(重要)影响是迫使攻击者分别攻击每个哈希。盐的强度并不重要,只要它是唯一的。我不建议对密码哈希进行一次哈希。如果您使用PBKDF2,它会进行多次散列(不过使用了更好的迭代方案)。也许,但使用md5,您就失去了entrophy。我相信,如果你无限次md5任何字符串,你总是会得到相同的散列。我认为熵的损失将比通过减慢散列计算而获得的安全性收益要低。对于典型的迭代计数,熵的损失不是实际问题。但当然,一个好的迭代方案会在每一步中混合原始密码,以防止丢失。“我相信,如果你无限次md5任何字符串,你总是会得到相同的哈希值。”我怀疑。这意味着md5哈希空间中只有一个循环。我预计会有大量的周期(但仍远少于2^128)。我的直觉是,哈希函数中会有大约2^64个不同的周期,因为在当前周期中结束的行为方式与生日问题类似。但即使只有一个循环,也不意味着所有的散列都是相同的,因为大多数散列都会在该循环中的不同位置结束。因此,语句“我相信如果你无限次地md5任何字符串,你总是得到相同的哈希值。”意味着只有一个循环,这个循环的长度是1。我听上去不大可能。