【发布时间】:2009-04-03 15:59:31
【问题描述】:
如果我使用 C# 通过互联网将文件从计算机 A 传输到计算机 B,使用 .NET 进行文件传输的多种方法之一,判断计算机 A 和计算机 B 上的文件是否为一样吗?
我认为 MD5 哈希是一个很好的判断方法。这似乎是一种被广泛接受的说法。但是,我只是仔细检查一下是否没有更好的方法隐藏在 .NET 框架中。
谢谢 托尼
【问题讨论】:
如果我使用 C# 通过互联网将文件从计算机 A 传输到计算机 B,使用 .NET 进行文件传输的多种方法之一,判断计算机 A 和计算机 B 上的文件是否为一样吗?
我认为 MD5 哈希是一个很好的判断方法。这似乎是一种被广泛接受的说法。但是,我只是仔细检查一下是否没有更好的方法隐藏在 .NET 框架中。
谢谢 托尼
【问题讨论】:
MD5 是要走的路。
【讨论】:
CRC32 或 Adler32,它们比 MD5 快很多。如果您需要检查文件是否被恶意操纵,您应该使用 MD5。如果没有必要,那就太过分了。
【讨论】:
SHA2 (SHA256, SHA512) 算法优于 MD5 的原因有很多。
.NET 中的本机实现是SHA256Cng、SHA384Cng 和 SHA512Cng。您可以将它们定义为使用配置文件中的< cryptoClass > 元素进行散列时使用的默认算法,而不是显式实例化它们。
完成后,您只需编写HashAlgorithm.Create() 或SHA256256.Create() 即可创建本机实例。
【讨论】: