2011-07-17 1 views
8

私は、Perl 5.8.2以降でハッシュランダム化機能をトリガーしようとしています。これを行うには、私は病理学的であるが、ランダム化機能のための鍵のセットが必要です。私はMJD's codeを使ってみましたが、うまくいきませんでした。そして、私はそれを見るので、私は驚いてはいけません。それは1997年から来て、それ以来ハッシュ関数を切り替えました。ハッシュの病理学的キーはどのようにして製造できますか?

病的なキーのセット、またはそれらを生成する方法を知っている人はいますか?私はちょうどハッシュ関数とリバースエンジニアリングソリューションを見に行くべきだと思うが、私は怠惰だ。

答えて

10

注:この情報は5.8.2と5.17.xの間のperlで有効です。 perl 5.18以降、perlは新しいハッシュアルゴリズムを使用します。ハッシュのランダム化は、(病理学的ハッシュが検出された場合のみではなく)すべての起動時に発生し、PERL_HASH_SEEDは異なって解釈されます。 perlは現在128ビットのハッシュシードを使用しているので、 "病理学的ハッシュ"条件は意図的にトリガすることはほとんど不可能です。

オリジナルの答え: perlは、などのキー"\0""\0\0""\0\0\0"の収集を開始する前に、あなたがハッシュバケット0に上陸するすべてのキーが発生します環境でPERL_HASH_SEED=0を置くことによって0にハッシュシードを強制した場合現在のperls。

+0

「PERL_HASH_SEED」は私がテストしようとしているものですが、\ "x $ keynumはおそらく私が望むことをします。 –

+0

うん、それはトリックを行います。私は今、信頼できるハッシュを再ハッシュさせることができます。 –

関連する問題