【发布时间】:2018-08-06 18:25:27
【问题描述】:
在 Perl 中是否有一个包/函数可以让我以简单的方式提供给我
- 短信息(例如数字、短字符串)
- 类似于哈希值/校验和(例如 MD5)
- 具有良好的区别(例如加密哈希,如 MDx、SHAx)
- 表示复杂数据结构的内容(例如散列数组的散列)。
我想到的最好的主意是
将我的结构序列化为字符串(例如,使用 Data::Dumper)
使用 MDx 对字符串进行哈希处理
但也许还有更优雅的方式。
【问题讨论】:
-
任何散列都可以,但取决于目的。是“快速”比较两个结构并评估它们是否不同吗? (在这种情况下,如果序列化没有以完全相同的方式完成,您可能会因为结构没有真正的变化而获得不同的哈希值)。
-
我认为任何校验和都是为了一种比较:-)
-
视情况而定。如果您仍然含糊不清(不知道大小、速度等的限制),您的答案已经在您的问题中:序列化和散列。但我仍然认为最好的答案取决于这样做的目的。以 CDROM 等物理介质为例:它们有校验和来查看介质是否损坏,但也没有什么可比较的,你只知道它是否正常。一些更复杂的校验和允许您检测和修复(部分)损坏的数据。
-
注意序列化的一致性(例如,设置
$Data::Dumper::Sortkeys),以便相同的输入产生相同的输出。
标签: perl data-dumper