Vytvoření hash a authentizace pomocí hashovací funkce Scrypt
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- vymak
- Člen | 92
Ahoj, včera jsem četl článek od Jakuba Vrány, ukládání hesel bezpečně . Chtěl jsem tedy vyzkoušet algoritmus, který Jakub doporučil, tedy Scrypt. Nikde jsem nanalezl ale balíček s tímto algoritmem, ale nakonec jsem ho „vypreparoval“ ze Zend Frameworku.
https://www.dropbox.com/…xq/Crypt.zip
Zde máte funkční řešení, třeba se to někomu bude hodit :)
Authenticator.php
use Zend\Crypt\Key\Derivation\Scrypt;
function authenticate(array $credentials) {
...
if ($row->password !== $this->calculateHash($password, 'sůl pro osolení hesla')) {
Debugger::log('Heslo [' . $username . ', ' . $password . '] není správné!', Debugger::WARNING);
throw new AuthenticationException('Heslo není správné.', self::INVALID_CREDENTIAL);
}
...
}
private static function calculateHash($password, $salt) {
return Scrypt::calc(md5($password), $salt, 256, 15, 1, 60);
}
V databázi musí být sloupec, kam se hash ukládá typu BINARY