散列算法的测试平台过程是什么?

时间:2012-12-24 10:02:49

标签: c++ unit-testing hash cryptography steganography

假设我编写了一个标准算法的实现,例如MD *或SHA *:我怎么知道它是正确的?同一算法的不同实现必须产生相同的摘要?

2 个答案:

答案 0 :(得分:5)

参考文件本身包含少量可以使用的示例案例。 (例如,"abc"的散列在所有参考文档中。)此外,Aaron Gifford在http://www.adg.us/computers/sha.html提供了许多测试用例。特别是,他测试了一些边界情况(文本正好是一个块的长度,或者少一个,以及其他一些特殊长度。如果你的实现计算所有这些的正确值,那么很有可能它是正确的。

答案 1 :(得分:3)

是的,情况就是这样。但是,某些散列算法会带有变体/设置,因此如果是这种情况,您需要匹配这些算法。

一个很好的例子是如何经常给出MD5以允许您验证下载是否正确。为了实现这一点,MD5哈希实现需要为所有实现产生相同的结果。