有没有比MD5更好的单向加密方法?(.NET)

3

我正在寻找一种比MD5更好的加密方法。它必须是单向加密,因为我不想在加密中使用密钥。


1
玩得开心解密吧。在SHA-1或SHA-256中哪个更难呢?这是否意味着SHA-256比MD5更好或更差呢? - Thilo
1
Khaled,你应该阅读http://forum.codecall.net/blogs/wingedpanther/244-encryption-vs-hashing.html。有人因为你不知道加密和哈希的区别而投了反对票。 - BenCr
4
如果您要给一个问题点踩,至少应该解释一下原因,这样提问者才能修改他们的问题。网站不应该是为了满足自己的虚荣心或者挖苦别人,它应该是关于以一种友善、干净和可读的方式分享知识。 - Bronumski
谷歌搜索“c#加密方法”比没有场景的开放性问题更好作为起点,如果您在实现找到的任何内容时遇到困难,可以跟进OP的一些研究并提出具体的编程问题。已经给出的答案可能没有回答他的问题,因为它们是关于哈希而不是加密的,因为问题不清楚。 - bgs264
各位好,很抱歉犯了这个错误,我使用MD5加密登录密码..所以我称其为加密.. - Khaled
2个回答

3
基本上 MD5 是一种哈希算法而不是加密算法。你可以使用更稳定的 SHA1
using(System.Security.Cryptography.SHA1 hash = System.Security.Cryptography.SHA1.Create())
{ 
   System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();   
   byte[] combined = encoder.GetBytes(str);   
   hash.ComputeHash(combined);   
}

编辑:回答评论

System.Security.Cryptography.SHA1类

哈希用作表示大量数据的固定大小的唯一值。如果相应数据也匹配,则两组数据的哈希应该匹配。对数据进行小改动会导致哈希发生大而不可预测的变化。

SHA1算法的哈希大小为160位。


@sllev,正如我最近发现的那样,SHA1是一个IDisposable,因此您可能希望在使用它时将其包装在using语句中。 - Zruty
@Zruty:让这个.NET提示传给Khaled吧 ;) 我刚刚举了一个与SHA1相关的例子。不管怎样,谢谢,我会更新答案的。 - sll
SHA-1相对于MD5来说如何更加“稳定”? - LukeH
@LukeH:基本上,SHA1使用160位而不是MD5的128位,因此不同数据生成相同哈希值的可能性较小。 - sll

3

MD5不是一种加密方法,因为您无法根据其MD5哈希解密消息。它是一种散列算法:给定任意消息,它计算其“摘要”(因此算法名称为MD5)。

可以通过计算(消息+共享密钥)组合的MD5哈希来将MD5用作签名消息的手段。

还有其他散列算法,例如SHA1SHA256,您可以在代码中使用它们代替MD5。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接