首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么md5不能匹配Perl的Digest::MD5输出?

为什么md5不能匹配Perl的Digest::MD5输出?
EN

Stack Overflow用户
提问于 2010-02-16 09:40:06
回答 4查看 1.4K关注 0票数 5

从ksh终端运行md5函数与简单的Perl脚本的输出不匹配。

在我运行的终端中:

代码语言:javascript
运行
复制
echo -n abc | md5
62fecf21103616856d72e6ffc9bcb06b

如果我使用Perl运行它:

代码语言:javascript
运行
复制
use Digest::MD5 qw(md5_hex);

foreach (@ARGV) {
   print "Digest is ", md5_hex($_), "\n";
}
exit

我得到了

代码语言:javascript
运行
复制
./perl_test.sh abc
Digest is 900150983cd24fb0d6963f7d28e17f72

在我看到的所有示例中,以及md5函数本身的示例中,Perl示例看起来是正确的,但只使用Ksh的示例就不是这样:

代码语言:javascript
运行
复制
md5 -x
MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-16 09:56:53

使用更便携的printf

代码语言:javascript
运行
复制
printf "abc" | md5
票数 5
EN

Stack Overflow用户

发布于 2010-02-16 09:49:59

您的echo不识别-n选项,因此您将对字符串'-n abc\n‘进行散列处理。

票数 4
EN

Stack Overflow用户

发布于 2010-02-16 10:00:04

根据GregS的回答,下面是一些例子:

代码语言:javascript
运行
复制
$ md5 -s "-n abc"$'\012' # \012 = newline
MD5 ("-n abc
") = 62fecf21103616856d72e6ffc9bcb06b

代码语言:javascript
运行
复制
$ md5 -s "abc"
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2270131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档