- crypt: documentation ( source)
- array_unique: documentation ( source)
- array_pop: documentation ( source)
<?php
$str = '';
$hashes = array();
$salts = array('BCRYPT' => '$2a$04$1234567890123456789012', 'SHA256' => '$5$rounds=1000$usesomesillystringforsalt$','SHA512' => '$6$rounds=1000$usesomesillystringforsalt$', 'MD5' => '$1$rasmusle$');
foreach ($salts as $algo => $salt) {
do {
$str .= '0';
$hashes[] = crypt($str, $salt);
if (count(array_unique($hashes)) === count($hashes))
$allUnique = true;
else
$allUnique = false;
} while($allUnique);
echo "Stopped at " . strlen($str) . " characters for salt $algo before truncation was detected...\n\n";
$lst = array_pop($hashes);
$stl = array_pop($hashes);
echo "$stl\n$lst";
}