PHP beginner |
|
ik heb een (simpel) scriptje gemaakt om wachtwoorden te versleutelen voor een ledensysteem wat ik ga maken. $pass = wachtwoord, $salt = salt (salt is gebruikersnaam).
de string die als output is, is altijd 64 karakters lang. Is dit veilig voor rainbowtables enzo? en hebben jullie nog verbeterpuntjes?
script:
<?php
function ush($pass, $salt, $str="")
{
$pass = sha1($pass . md5($salt . $pass));
$salt = strtolower($salt);
$arr[0] = strlen($pass);
$arr[1] = strlen($salt);
while($arr[0] > $arr[1] + 1)
{
$salt = $salt.$salt;
$arr[1] = strlen($salt);
}
$salt = ($arr[1] > 24) ? substr($salt, 0, 24) : $salt;
$split_len = floor(max($arr) / (min($arr) - 1));
$salt = explode(" ", chunk_split($salt, $split_len, " "));
array_pop($salt);
$salt = array_reverse($salt);
$j = $arr[0] > count($salt) ? $arr[0] : count($salt);
for($i=0; $i<$j; $i++)
{
if(isset($pass{$i})) $str .= $pass{$i};
if(isset($salt[$i])) $str .= $salt[$i];
}
return $str;
}
echo ush('wachtwoord', 'gebruiker');
?>
<?php function ush($pass, $salt, $str="") { $pass = sha1($pass . md5($salt . $pass)); while($arr[0] > $arr[1] + 1) { $salt = $salt.$salt; } $salt = ($arr[1] > 24) ? substr($salt, 0, 24) : $salt; $j = $arr[0] > count($salt) ? $arr[0] : count($salt); for($i=0; $i<$j; $i++) { if(isset($pass{$i})) $str .= $pass{$i}; if(isset($salt[$i])) $str .= $salt[$i]; } return $str; } echo ush ('wachtwoord', 'gebruiker'); ?>
|