【发布时间】:2011-01-17 05:27:56
【问题描述】:
从 ksh 终端运行 md5 函数与简单 Perl 脚本的输出不匹配。
在我运行的终端中:
echo -n abc | md5
62fecf21103616856d72e6ffc9bcb06b
如果我使用 Perl 运行它:
use Digest::MD5 qw(md5_hex);
foreach (@ARGV) {
print "Digest is ", md5_hex($_), "\n";
}
exit
我明白了
./perl_test.sh abc
Digest is 900150983cd24fb0d6963f7d28e17f72
在我看到的所有示例和md5 函数本身的示例中,Perl 看起来正确,但仅使用 Ksh 的示例却不正确:
md5 -x
MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
【问题讨论】:
-
echo输出 'c' 和管道之间的空间吗? -
md5 不是 ksh 函数。顺便说一句,这也会给出与您的 Perl 版本相匹配的结果:
echo -e 'abc\c' | md5。 @Anon.:不,试试echo abc |hd(或hexdump -C)。