我试图在Perl 5.8.2及更高版本中触发哈希随机化功能。要做到这一点,我需要一组病态的,但随机化功能。我尝试使用MJD's code
,但这不起作用。而且,现在我看着它,我不应该感到惊讶。它来自1997年,从那时起我们就改变了哈希函数。
有没有人知道一组病理键,或者如何生成它们?我想我应该去看哈希函数并反向设计解决方案,但我很懒。
答案 0 :(得分:10)
注意:此信息对于5.8.2和5.17.x之间的perl有效。从perl 5.18开始,perl使用新的哈希算法,每次启动时都会发生哈希随机化(而不是仅在检测到病态哈希时),并且PERL_HASH_SEED
的解释方式不同。由于perl现在使用128位散列种子,因此几乎不可能故意触发“病态散列”条件。
原始答案:如果您在perl启动之前将PERL_HASH_SEED=0
放入环境中强制将哈希种子强制为0,则会收集密钥"\0"
,"\0\0"
,"\0\0\0"
等会导致每个密钥以当前的perls登陆到哈希桶0中。