【问题标题】:Why am I getting the same MD5 checksum for seemingly different inputs using Perl's Digest::MD5?为什么使用 Perl 的 Digest::MD5 对于看似不同的输入,我得到相同的 MD5 校验和?
【发布时间】:2010-07-02 04:04:49
【问题描述】:

在我的 64 位 Linux 平台上重新编译 perl 和 SSHing Mac 终端(我猜是 UTF-8)。我提供所有这些信息以防万一。

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@vi\n") ."\n");'
756e98065cb8cbf603a3dbef2afe9261

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@visi\n") ."\n");'
756e98065cb8cbf603a3dbef2afe9261

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@vision\n") ."\n");'
756e98065cb8cbf603a3dbef2afe9261

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@visionten\n") ."\n");'
756e98065cb8cbf603a3dbef2afe9261

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@visionten.\n") ."\n");'
d32e04de6906b3f284c6834b4d1d77c1

# perl -e '使用摘要::MD5 qw/md5_hex/;打印(md5_hex("alex@\n") ."\n");'
264eca1047ccc6272ac2e338c695379e

【问题讨论】:

  • 您是否尝试在调用函数之前将输入打印到 md5_hex?
  • 始终启用警告;甚至(或者特别是?)单线。
  • 对,在命令行中使用-Mstrict-w 都会发现问题。
  • 这里有一个更短的写单行的样式:perl -MDigest::MD5=md5_hex -wE "say md5_hex(qq/alex\@vi\n/);"

标签: perl md5 md5sum


【解决方案1】:

您在双引号字符串中使用@。所有@vision 和@visionten 事物都在评估同一事物。

【讨论】:

  • 正确。 Perl 将嵌入的 @vision 和 @visionten 插入为空数组,导致没有任何输出。打印 md5_hex() 参数字符串将显示大多数字符串最终评估为“alex\n”
  • @hobbs:对于单行来说,这有点困难。
  • 在任何其他情况下都不会更难,@Kinopiko。
  • @Kinopiko -mstrict 甚至比use strict 短:)
  • @alex:每个使用 Perl 的人都至少犯过一次同样的错误。
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 2012-04-09
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
相关资源
最近更新 更多