软件测试 | 计算散列值
问题
如果你的应用程序对数据使用散列值、检验和或者其他完整性检查,那么你将需要辨认它们,而且还可能需要对测试数据计算这些值。如果你不熟悉散列值,请看稍后的补充材料“什么是散列值?”。
解决方案
于其他编码任务一样,你至少有 3 项很好的选择:OpenSSL,CAL9000 和 Perl。
MD5
复制代码
SHA1
复制代码
讨论
MD5 的情况是通过在 Unix 或 Windows 上使用 OpenSSL 来进行演示的。OpenSSL 还有对等的 sha1 命令。注意,在 Unix 上 echo 命令需要-n 以禁止在数据末尾追加换行字符。尽管 Windows 也有 echo 命令,但你不能以同样的方法使用它,因为没有办法来禁止你所给信息末尾的回车/换行字符对。
SHA-1 的情况是以 Perl 脚本进行演示的,用到了 Digest::SHA1 模块。Perl 有对等的 Digest::MD5 模块,以同样的方式用于 MD5 散列值。
注意,没有八法能解码散列值。散列值是单向的数学摘要。无论输入有多少数据,散列值都会生成长度完全相等的输出。
MD5 散列值
MD5 散列值生成这稿 128 位(16 字节)的数据。你可能会看到它有几种不同的表示方式:
32 个十六进制字符
复制代码
24 哥 Base-64 字符
PlnPFeQx5Jj+uwRfh//RSw==。如果它们接收 MD5 的二进制输出(128 个原始的二进制位),然后进行 Base-64 编码,那么你就是看到这种表示方式。
SHA-1 散列值
SHA-1 是一种散列值,它总是生成正好 160 位(20 字节)的数据。与 MD5 一样,你可能会看到它被表示为以下几种方式:
复制代码
评论