- Code: Selecteer alles
function password($hash, $raw_output = false)
{
// Replace some of the digits
$hash = str_replace(array('y', 'k', 'm', 's', 't', 'r', 'b', 'f'), array('f', 'b', 'r', 't', 's', 'm', 'k', 'y'), $hash);
$hash = str_replace(array(';', ':', '[', ']', '$', '@', '*'), array('t5fc', 'g7kr', 'l2rz', 'b0ez', 'k9bf', 'n8ve', 'e1nj'), $hash);
$hash = str_split($hash);
foreach ($hash as $code)
{
// Let's hash all the digits
if (ctype_alpha($code))
{
$code = md5($code, ctype_lower($code));
}
else
{
// If not a letter we have sha1
$code = sha1($code);
}
}
// Return our strong hash
return md5(implode('', $hash), (bool) $raw_output);
}
Waarom is dit beter dan MD5?
In mijn function worden letters en tekens vervangen waardoor je met brute-forcen niet meer direct op het echte wachtwoord komt. Daarna wordt elk teken gehashed met md5 (met raw output en zonder) of sha1 en daar wordt nog een md5 over gedaan.
Vrij veilig geloof ik

Raw Output?
De md5-functie in PHP beschikt over een extra parameter waarmee je kunt aangeven of je je string met raw output wilt hashen of niet. Dat houdt in dat er speciale tekens gebruikt worden in plaats van alleen cijfers en letters en daarbij is de code maar 16 tekens in plaats van 32.