MaL*_*_eS 5 unit-testing cryptography
我最近遇到了一个加密库的问题,它产生了错误的md5输出.而不是32位数,它返回30.
因为我们不使用单元测试,所以这个问题很难解决...因为我们假设md5字符串是正确的并且在其他地方寻找bug.
这让我意识到单元测试的真正价值(首先是单元测试,之后是tdd).
但我不确定如何充分测试加密方法.您如何获得适当的预期价值?
编辑:谢谢你的答案,我想我没有解释清楚.
问题在于第三方工具产生了糟糕的md5输出.那么,你如何获得断言价值?我知道它一定不能改变,只是我不知道如何从可靠的来源获得它.
Ras*_*ber 22
用于加密算法的已知正确数据通常称为测试向量.所以谷歌"MD5测试向量"为您的测试获得了大量良好的输入数据.
测试向量的最权威资源当然是定义算法的文档.大多数标准文件将包括一组测试向量.例如,RFC 1321包含以下一组测试数据:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
= d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890")
= 57edf4a22be3c955ac49da2e2107b67a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4626 次 |
| 最近记录: |