Ich versuche, die Hash-Randomisierung in Perl 5.8.2 und höher auszulösen. Um dies zu tun, brauche ich eine Reihe von Schlüsseln, die pathologisch sind, aber für das Randomisierungs-Feature. Ich habe versucht, MJD's code
zu verwenden, aber das hat nicht funktioniert. Und jetzt, wo ich es sehe, sollte ich nicht überrascht sein. Es stammt aus dem Jahr 1997 und wir haben seither die Hashing-Funktionen gewechselt.
Kennt jemand eine Menge pathologischer Schlüssel oder wie erzeugt man sie? Ich denke, ich sollte einfach auf die Hash-Funktion schauen und eine Lösung reverse engineeren, aber ich bin faul.
Hinweis: Diese Information gilt für Perl zwischen 5.8.2 und 5.17.x. Beginnend mit Perl 5.18 verwendet Perl einen neuen Hashalgorithmus, Hash-Randomisierung tritt bei jedem Start auf (statt nur wenn ein pathologischer Hash erkannt wird), und PERL_HASH_SEED
wird anders interpretiert. Da Perl nun einen 128-Bit-Hash-Seed verwendet, sollte die Bedingung "pathologischer Hash" fast nicht absichtlich ausgelöst werden können.
Ursprüngliche Antwort: Wenn Sie den Hashwert auf 0 setzen, indem Sie PERL_HASH_SEED=0
in die Umgebung setzen, bevor Perl gestartet wird, wird die Sammlung der Schlüssel "
, %code% , %code% , etc . bewirkt, dass jeder Schlüssel mit den aktuellen Perls im Hash-Bucket 0 landet. "
""%code%%code%%code%"
%code%"