用于基于短字符串计算整数哈希键的 CPAN 模块
我正在寻找一个 CPAN 模块,它将接受一个短字符串:
my $hash_value = hash_this('short string not too long');
并将其散列成一个整数键:
say $hash_value;
12345671234 # an integer key
I'm looking for a CPAN module that will take a short string:
my $hash_value = hash_this('short string not too long');
And hash it into an integer key:
say $hash_value;
12345671234 # an integer key
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您需要的哈希值仅为 32 位或 64 位长*,也就是说,如果您需要计算机科学术语中使用的类型的哈希值,例如“哈希表" 而不是 哈希在密码学意义上(不能同时如此短和强),您可以使用 CRC32 或其朋友之一。
OTOH,如果您需要加密强度较高的哈希函数,我会避免使用 MD5 并使用 SHA-现在256。
*:我不知道perl整数值有多大,所以我可能是错的
If you need an hash that is only 32-bit or 64-bit long*, that is, if you need an hash of the type used in computer science terms such as "hash table" and NOT an hash in the cryptography meaning (which CAN'T be that short and strong at the same time) you can use CRC32 or one of its friends.
OTOH if you need a cryptographically strong hash function, I would avoid MD5 and use SHA-256 nowadays.
*: I don't know how big is a perl integer value, so I might be wrong there
Digest::MD5 应该有效:
http://metacpan.org/pod/Digest::MD5
有了二进制文件,您应该能够使用它来转换它:
Math::BaseCnv
Digest::MD5 should work:
http://metacpan.org/pod/Digest::MD5
With the binary, you should be able to convert it using it:
Math::BaseCnv
我写了 Algorithm::Nhash 来解决这个问题。 它从字符串生成一个廉价的哈希值,并可以选择进行模运算以将字符串放入桶中。
I wrote Algorithm::Nhash to solve this exact problem. It generates a cheap hash from a string and optionally does modulo arithmetic to throw the strings into buckets.