![]() |
1
21
密码算法的已知正确数据通常称为 测试向量 .所以谷歌“MD5测试向量”可以为你的测试获得大量的好的输入数据。 测试向量最权威的资源当然是定义算法的文档。大多数标准文件将包括一组测试向量。例如, RFC 1321 包含以下测试数据集:
|
![]() |
2
4
编码的MD5将始终具有相同的值。因此,您可以使用对字符串进行编码的断言,并且您知道的值是适当的。
“str”的编码值应始终为“341be97d9aff90c9978347f66f945b77”。
|
![]() |
3
1
单元测试的基本前提是运行一个包含一些数据的方法,在这些数据中您预先知道输出将是什么。 因此,要测试加密方法,您需要生成一些匹配的输入和输出数据对。取一个数据字符串,说“这是一些测试数据”。使用第三方加密工具或库对其进行加密,以获得“guvf vf fbzr grfg qngn”。 现在您有了一对具有预期输出的输入数据。 编写单元测试来传递输入数据,并验证输出是否符合预定的期望。您的输入和期望的输出数据可以作为字符串硬编码到单元测试中(如果您想做很多对,也可以从数据库中读取)。 与一般的编程最佳实践相反,只使用预先确定的、计划的和可重复的数据运行单元测试通常被认为是好的实践。使用随机生成的字符串运行单元测试被认为是不好的实践,因为这意味着单元测试不可重复。 显然,MD5方法的理论是相同的,只需获取一些示例数据,通过第三方MD5哈希工具运行它,然后使用输入/输出数据对来验证您的方法是否提供了正确的输出。 |
![]() |
4
0
正如其他人已经提到的,发布的测试向量或发布的引用实现应该是可靠测试值的良好来源。 我还想补充一点:如果可能的话 请不要使用MD5。 它已经存在许多已知的安全问题,因此保持与某些旧系统的兼容性是人们希望在新代码中使用它的唯一原因。 如果可以,请使用SHA-256(在 FIPS-180-2 包括一组测试向量)。如果您不需要256位散列,将其截断为128位,那么您将有一个更安全的MD5替代方案。 |
|
wavesinaroom · 断言结构向量长度 8 月前 |
![]() |
Tim Kirkwood · 比较空数据帧 9 月前 |
![]() |
Kamran Khan · 使用单元测试ASP。NET核心 1 年前 |
![]() |
paymer · 为什么我的代码没有删除我的单元测试生成的zip文件? 1 年前 |
![]() |
Ricky Mo · 角度测试如何模拟导入的const 1 年前 |
![]() |
Natty · Visual Studio中缺少“代码覆盖率结果” 1 年前 |