Citat:
Originally posted by dimka@Jul 27 2008, 23:30
Jag tycker att osCommerce funktion att kryptera lösenord är bäst!
Citat:
function encrypt_password($plain) {
$password = '';
for ($i=0; $i<10; $i++) {
* $password .= tep_rand();
* // tep_rand() returnerar ett slumpvis tioställigt numeriskt värde (ex. 3541976724)
* // utifrån php-funktionerna nedan;
* // mt_srand((double)microtime()*1000000);
* // mt_rand();
}
// utifrån det slumpade "lösenordet" ovan hämtas saltet
$salt = substr(md5($password), 0, 2);
$password = md5($salt . $plain) . ':' . $salt;
return $password;
}
|
|
Det är inte bra att lägga saltet först som dom gör här: md5($salt . $plain) , eftersom en bruteforce attack blir enklare då, saltet skall läggas sist eller på båda sidorna om lösenordet.
Längden på saltet bör ligga på mer än 2 bytes, för att förhindra dom som sitter på regnbågstabeller där man även "inkluderat" salt, men samtidigt är det onödigt ha en större salt än hashalgoritmens egna styrka, i md5:s fall 16 bytes (32 st hex).
|