2011-07-17 12 views
8

Próbuję uruchomić funkcję randomizacji hash w Perlu 5.8.2 i nowszych. Aby to zrobić, potrzebuję zestawu kluczy, które byłyby patologiczne, ale dla funkcji randomizacji. Próbowałem użyć MJD's code, ale to nie zadziałało. I teraz, kiedy na to patrzę, nie powinienem być zaskoczony. Pochodzi z 1997 roku i od tego czasu zmieniliśmy funkcje mieszania.Jak mogę wyprodukować klucze patologiczne dla skrótu?

Czy ktoś wie o zestawie kluczy patologicznych lub jak je wygenerować? Sądzę, że powinienem popatrzeć na funkcję skrótu i ​​zaprojektować rozwiązanie odwrotne, ale jestem leniwy.

Odpowiedz

10

Uwaga: ta informacja dotyczy perla między 5.8.2 a 5.17.x. Począwszy od perl 5.18, perl używa nowego algorytmu mieszania, randomizacja hashów występuje przy każdym uruchomieniu (zamiast tylko wtedy, gdy wykryty jest patologiczny skrót), i PERL_HASH_SEED jest interpretowany inaczej. Ponieważ teraz perl używa 128-bitowego hasha, "patologiczny" hash powinien być prawie niemożliwy do wywołania celowego.

Oryginalny odpowiedź: Jeśli zmusić nasienie hash 0 umieszczając PERL_HASH_SEED=0 w środowisku przed rozpoczęciem Perl, zbieranie kluczy "\0", "\0\0", "\0\0\0" itp spowoduje każdy klawisz skrótu do lądowania w wiadrze z 0 obecne perły.

+0

hmm, 'PERL_HASH_SEED' jest tym, co próbuję przetestować, ale' '\ 0" x $ keynum' prawdopodobnie zrobi to, co chcę. –

+0

Tak, to działa. Mogę teraz rzetelnie wymusić zmianę skrótu. –

Powiązane problemy