我正在尝试在 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/