Python的hash
函数的摘要文档为:
Type: builtin_function_or_method
String form: <built-in function hash>
Namespace: Python builtin
Docstring:
hash(object) -> integer
Return a hash value for the object. Two objects with the same value have
the same hash value. The reverse is not necessarily true, but likely.
(例如,hash
函数应用于上面的文档字符串时返回整数3071661466461282235。)
Perl是否有相同的功能?
编辑:我正在寻找的不需要为任何参数返回与Python的hash
函数相同的值。
答案 0 :(得分:1)
有多种方法可以对对象进行哈希处理。使用perl执行此操作的最佳方法是通过模块。
E.g。 Digest::SHA
哪个会这样:
use Digest::SHA qw(sha1 sha1_hex sha1_base64 ...);
$digest = sha1($data);
$digest = sha1_hex($data);
$digest = sha1_base64($data);
$digest = sha256($data);
$digest = sha384_hex($data);
$digest = sha512_base64($data);
您可以通过在CPAN shell i /Digest/
中运行perl -MCPAN -e shell
来查看各种选项的列表。 Digest::MD5
是另一个常见的选择。
我建议对于琐碎的实现,它实际上并没有你使用的很多区别。如果它不重要,则存在与哈希冲突有关的安全问题。
答案 1 :(得分:1)
首先,您应该重载对象的“to-string”方法。如果你只想在哈希中使用对象作为键,那就足够了。 Perl应用一些内部哈希机制来快速键值访问。
其次,您可以将任何散列机制应用于结果字符串,例如Digest::SHA,或者,如果您不需要强大的安全要求,那么您可以使用Digest::MurmurHash(已宣布的MurmurHash速度 5Gb / s !)。