问题

如果你的应用程序对数据使用散列值、检验和或者其他完整性检查,那么你将需要辨认它们,而且还可能需要对测试数据计算这些值。如果你不熟悉散列值,请看稍后的补充材料“什么是散列值?”。

解决方案


(资料图)

于其他编码任务一样,你至少有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一样,你可能会看到它被表示为以下几种方式:

推荐内容