当Perl 5.8.1问世时,它添加了散列随机化.当Perl 5.8.2出来时,我想,除非存在环境变量(PERL_HASH_SEED),否则它会删除哈希随机化.现在好像我被严重误认为
PERL_HASH_SEED=$SEED perl -MData::Dumper -e 'print Dumper{map{$_,1}"a".."z"}'
Run Code Online (Sandbox Code Playgroud)
无论价值如何,始终都会重新启动相同的密钥排序$SEED.
哈希随机化完全消失了,我做错了什么,或者这是一个错误?
请参阅算法复杂性攻击:
在Perl 5.8.1中,散列函数被伪随机种子随机扰动,这使得生成这种淘气的散列密钥更加困难.[...]但是从5.8.2开始,如果内部检测到病理数据的插入,则仅用于个别哈希.
因此,只有当perl检测到需要时,才会发生随机化.