Security MD5在实际意义上是否不如SHA等人安全?
我已经看到并不断地暗示MD5不如SHA那样安全 我的问题是,在我的情况下,这值得担心吗? 下面是我如何使用它的一个示例:Security MD5在实际意义上是否不如SHA等人安全?,security,hash,md5,sha,Security,Hash,Md5,Sha,我已经看到并不断地暗示MD5不如SHA那样安全 我的问题是,在我的情况下,这值得担心吗? 下面是我如何使用它的一个示例: 在客户端,我通过添加当前时间和密码,然后使用MD5对其进行散列,为消息提供“安全”校验和。所以:MD5(消息+时间+密码) 在服务器端,我使用我知道的消息发送时间和客户端密码,对照发送的消息检查此哈希 在本例中,使用SHA而不是MD5真的更好吗? 在什么情况下,哈希函数的选择在实际意义上真正重要 编辑: 只是想澄清一下——在我的例子中,使用SHA算法有什么好处吗 换句话说,在
MD5(消息+时间+密码)
抱歉重复编辑-我不清楚我问的是什么。这取决于信息内容的价值。SHA家族显然比MD5更安全(其中“更安全”意味着“更难伪造”),但如果你的消息是twitter更新,那么你可能不在乎 如果这些消息是处理金融交易的分布式系统的IPC层,那么您可能更关心这些消息 更新:我还应该补充一点,这两种摘要算法在许多方面基本上是可互换的,那么使用更安全的算法会有多大的麻烦呢
更新2:这是一个更彻底的答案:以这种方式使用MD5没有什么不安全的地方。MD5之所以被打破,是因为有一些算法,在给定一组数据的情况下,可以生成额外的数据B来创建所需的散列。这意味着,如果有人知道密码的散列,他们可以生成一个字符串,该字符串将与该散列一起产生。不过,这些生成的字符串通常很长,所以如果您将密码限制为20或30个字符,您可能仍然是安全的
在MD5之上使用SHA1的主要原因是MD5功能正在逐步淘汰。例如,Silverlight.Net库不包括MD5加密提供程序。是的,在实践中值得担心。MD5的缺陷非常严重,它能够伪造与证书颁发机构签署的真实证书相匹配的假证书。这意味着他们能够创建自己的假证书颁发机构,从而可以在浏览器完全信任他们的情况下模仿任何他们喜欢的银行或企业 现在,他们花了大量时间和精力使用PlayStation3s集群,并花了数周时间找到合适的碰撞。但一旦破坏,散列算法只会变得更糟,永远不会更好。若您关心安全性,那个么最好选择一个完整的散列算法,比如其中的一个(SHA-1也被削弱了,尽管不像MD5那个么坏) 编辑:我提供给您的链接中使用的技术涉及到能够选择两个任意消息前缀和一个公共后缀,从中可以为每个前缀生成一个数据块,该数据块可以插入该前缀和公共后缀之间,生成MD5和与从另一个前缀构造的消息相同的消息。我想不出在您描述的情况下可以如何利用此特定漏洞,通常,使用安全has for比使用它进行数字签名更能抵御攻击,但我可以想到一些您需要注意的漏洞,这些漏洞大多与您选择的哈希无关
存储在服务器上,并将salt发送到客户端,以便客户端可以计算哈希(密码+salt)
来代替您提到的协议中的密码。但是,这并不能保护您免受下一次攻击