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
+
0
-

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

Scrypt na Wiki