写点什么

软件测试 | 计算散列值

  • 2023-08-17
    北京
  • 本文字数:711 字

    阅读完需:约 2 分钟

问题

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

解决方案

于其他编码任务一样,你至少有 3 项很好的选择:OpenSSL,CAL9000 和 Perl。

MD5

% echo -n "my data" | openssl md5c:\>type myfile.txt | openssl md5
复制代码

SHA1

#/usr/bin/perluse Digest::SHA1 qw(sha1);$data  = "my data";$digest = sha1($data);print"$digest\n";
复制代码


讨论

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 个十六进制字符

df02589a2e826924a5c0b94ae4335329
复制代码

24 哥 Base-64 字符

PlnPFeQx5Jj+uwRfh//RSw==。如果它们接收 MD5 的二进制输出(128 个原始的二进制位),然后进行 Base-64 编码,那么你就是看到这种表示方式。

SHA-1 散列值

SHA-1 是一种散列值,它总是生成正好 160 位(20 字节)的数据。与 MD5 一样,你可能会看到它被表示为以下几种方式:

40个十六进制字符    bc93f945642995b5566e64742de38563b365a1e28个Base-64字符    9EkBWUsXoiwtICqaZp2+VbZaZdI=
复制代码


更多学习资料戳!!!

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 计算散列值_测试_测吧(北京)科技有限公司_InfoQ写作社区