【发布时间】:2012-12-10 18:52:06
【问题描述】:
假设我编写了一个标准算法的实现,例如 MD* 或 SHA*:我怎么知道它是正确的?相同算法的不同实现必须产生相同的摘要?
【问题讨论】:
标签: c++ unit-testing hash cryptography steganography
假设我编写了一个标准算法的实现,例如 MD* 或 SHA*:我怎么知道它是正确的?相同算法的不同实现必须产生相同的摘要?
【问题讨论】:
标签: c++ unit-testing hash cryptography steganography
参考文档本身包含少量的示例案例,可以使用。 (例如,"abc" 的哈希值在所有参考文档中。)此外,Aaron Gifford 在http://www.adg.us/computers/sha.html 上提供了许多测试用例。特别是,他对一些边界情况进行了测试(其中文本正好是块的长度,或者更少,以及其他一些特殊长度。如果您的实现为所有这些计算了正确的值,则有很有可能是正确的。
【讨论】:
是的,就是这样。但是,某些哈希算法带有变体/设置,因此如果是这种情况,您将需要匹配这些算法。
一个很好的例子是通常如何提供 MD5 以允许您验证您的下载是否正确。为使其工作,MD5 哈希实现需要为所有实现产生相同的结果。
【讨论】: