Perl';s相当于Python';s哈希(或Java的哈希代码)函数?
Python的Perl';s相当于Python';s哈希(或Java的哈希代码)函数?,python,perl,hash,Python,Perl,Hash,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
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.
类型:内置函数或方法
字符串形式:
名称空间:Python内置
文档字符串:
散列(对象)->整数
返回对象的哈希值。具有相同值的两个对象具有相同的
相同的散列值。相反的情况不一定是真的,但很可能是真的。
(例如,hash
函数在应用于上述文档字符串时返回整数307166466461282235。)
Perl是否有一个等价的函数
编辑:对于任何参数,我所寻找的不需要返回与Python的
哈希
函数相同的值。对对象进行哈希有多种方法。使用perl实现这一点的最佳方法是通过一个模块
例如
这将是这样工作的:
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);
通过在cpanshellperl-MCPAN-eshell
中运行i/Digest/
可以看到各种选择的列表<代码>摘要::MD5是另一种常见的选择
我建议对于琐碎的实现,使用哪一种实际上没有多大区别。如果它是非平凡的,那么就存在与哈希冲突相关的安全问题 首先,应该重载对象的“to string”方法。如果您只想在散列中使用对象作为键,这可能就足够了。Perl为快速键值访问应用一些内部哈希机制
其次,您可以对结果字符串应用任何哈希机制,例如,或者,如果您不需要强大的安全性要求,那么您可以使用(宣布的杂音哈希速度为5Gb/s!) 您是否在寻找任何散列函数,或是专门提供与Python相同结果的散列函数(至少是原始值)@Quentin:谢谢您的提问;我在我的帖子中添加了一个澄清。简而言之,同意Python的
hash
是没有必要的(尽管,现在您提到了它,这会有点不错,但只是作为一种愉快的奖励,根本不是必需的)。sub hash{return unpack(“%32W*”,“@”)}
,因为Python函数只对字符串有意义?这将散列一个字节字符串。这可能是他们需要的,也可能不是。