perl - 如何为散列制造病态 key ?

标签 perl hash

我正在尝试在 Perl 5.8.2 及更高版本中触发哈希随机化功能。为此,我需要一组病态的 key ,但用于随机化功能。我尝试使用 MJD's code ,但这没有用。而且,现在我看着它,我不应该感到惊讶。它来自 1997 年,从那时起我们切换了哈希函数。

有谁知道一组病理 key ,或者如何生成它们?我想我应该去看看散列函数并反向工程一个解决方案,但我很懒。

最佳答案

注:此信息对 5.8.2 和 5.17.x 之间的 perl 有效。从 perl 5.18 开始,perl 使用新的散列算法,散列随机化发生在每次启动时(而不是仅在检测到病态散列时),以及 PERL_HASH_SEED有不同的解释。由于 perl 现在使用 128 位散列种子,“病态散列”条件几乎不可能有意触发。

原答案:如果通过放置 PERL_HASH_SEED=0 强制哈希种子为 0在perl启动前的环境中,key的集合"\0" , "\0\0" , "\0\0\0"等将导致每个键都使用当前的 perls 落在哈希桶 0 中。

关于perl - 如何为散列制造病态 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724080/

相关文章:

perl - 在此处的文档中插入常量的首选方法是什么?

java - 根据 HashMap 检查字符串

python - 当一个对象可以等于不同类型的对象时,如何定义 __hash__ ?

Perl 哈希对键和值进行排序

python - 从 mysql 行插入启动进程

perl - 如何使用 Lwp::Useragent 发送 http 补丁请求?

mysql - 计算 ruby​​ 数组中的重复项并存储在哈希中

perl - 如何在 Perl 中使用数组引用中的索引作为方法引用?

python - 在列表列表中比较列表值的最佳方法是什么?

c# - MD5 computeHash(Stream) 和 computeHash(byte[]) 有什么区别