我应该选择哪个加密哈希函数?
.NET框架附带6种不同的哈希算法: MD5:16个字节(散列时间500MB:1462毫秒) SHA-1:20个字节(1644毫秒) SHA256:32个字节(5618毫秒) SHA384:48个字节(3839毫秒) SHA512:64个字节(3820毫秒) RIPEMD:20个字节(7066 ms) 这些功能各自执行不同的功能。MD5是最快的,而RIPEMD是最慢的。 MD5的优点是适合内置的Guid类型。它是类型3 UUID的基础。SHA-1哈希是类型5 UUID的基础。这使得它们真正易于识别。 但是,MD5容易受到碰撞攻击,SHA-1也容易受到攻击,但程度较小。 在什么情况下应该使用哪种哈希算法? 我真的很想知道答案的具体问题是: MD5不值得信赖吗?在正常情况下,当您使用没有恶意意图的MD5算法并且任何第三方都没有恶意意图时,您会期望发生任何冲突(这意味着两个任意byte []会产生相同的哈希) RIPEMD比SHA1好多少?(如果更好),其计算速度要慢5倍,但哈希大小与SHA1相同。 在对文件名(或其他短字符串)进行哈希处理时,获得非恶意冲突的几率是多少?(例如,两个具有相同MD5哈希值的随机文件名)(带有MD5 / SHA1 / SHA2xx)通常,非恶意冲突的几率是多少? 这是我使用的基准: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); …