【发布时间】:2009-08-04 22:04:43
【问题描述】:
如何在符合 FIPS 的 WinXP SP2 机器上使用 C# 来唯一地散列给定文件的内容?我不关心性能(还没有?)。
希望有人能指出“规则”的一个例外,但似乎“*ServiceProvider”类符合 FIPS 且在 WinXP 上不可用,而“*Managed”类在 WinXP 上可用而不是 FIPS-合规。
而且 MD5 已经过时了,因为它不是可靠的唯一性(是的,即使是这样小的可能性对我的项目来说也是不可接受的)。
【问题讨论】:
-
没有哈希算法是可靠唯一的。通过pigeonhole principle,您无法使用固定长度的哈希唯一地表示所有可能的任何长度的文件。
-
虽然在技术上是正确的,但这在当今的计算中并不是很有用。这个想法是,考虑到算法的概率,你愿意冒险它不是唯一的。 MD5 已被证明不值得冒险,但 SHA256 和 SHA512 非常值得。 SHA1 介于两者之间,对很多人来说已经足够好了,尽管我自己会犹豫使用它。我永远不会使用 MD5。
标签: c# .net windows-xp fips hashalgorithm