Raketenwilli: Und schmäht mir die Raspis nicht ...

Beitrag lesen

Ich habe die originale Wortliste genommen und auf 10.000 Array-Einträge verkürzt. Letztes Wort ist dann 'bevy'. Nach dem (doppelt) suche ich auch:

<?php 

### Vorbereitung
/*
$baselist = array_slice( file( 'wordlist.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ) , 0 , 10000 );
echo count($baselist) . ' Elemente,' .PHP_EOL;
file_put_contents( 'array.serialized', serialize( $baselist ) );
exit;
#*/

$baselist = unserialize( file_get_contents( 'array.serialized' ) );

define ( 'BIN', md5( 'bevybevy', true ) );
foreach ( $baselist as $w1 ) {
     foreach ( $baselist as $w2 ) {
         #2.:
         if ( BIN === md5( $w1 . $w2, true ) ) {
             echo "$w1 $w2";
             exit;
         }
     }
}

Auf dem „Raspberry Pi 4 Model B Rev 1.5“ mit 8GB, frisiert auf 1,8 GHz:

~/tmp$ time php test.php 
bevy bevy
real	0m49,090s
user	0m48,805s
sys	0m0,105s

Für 100.000.000 (100 Mio) mal „Hash bauen und vergleichen“ ist das gar nicht schlecht. Mit der hexadezimalen Ausgabe von md5() und den nicht typstrengen Vergleichen ( == statt === ) ist das bei mir sogar 10 Sekunden langsamer.

PHP-Version ist 8.2.