Как создать пароли SHA256 в PHP в этом формате? - PullRequest
0 голосов
/ 30 марта 2020

Что это за формат пароля?

Из моего исследования это выглядит как длина 6400, зашифрованный ключ pbkdf2 sha256 длиной 6400

Если мне нужно что-то написать в PHP, чтобы создать пользователей, как я бы go об этом?

 pbkdf2:sha256:150000$5gmU8sPF$fd67586ce17773c31d8b68711e11fdc2c1c9b7e183e702b039f52498742b665e

Большое спасибо

Генри

1 Ответ

0 голосов
/ 30 марта 2020

Вместо 150К итераций это может быть уменьшено до 1-10К.

/* generate 44 bytes password hash
    using hash key + multiple salts
*/

function hash_password($password, $key, $salts, $iteration = 1000) {
   $hash = $password;

   if (is_string($salts)) {
       $salts = (Object)[$key => $salts];
   }

   foreach ($salts as $k => $salt) {
       $hash = hash_pbkdf2('sha256', $hash, $k.$salt, 1000, 0, true));
   }

   return base64_encode(hash_pbkdf2('sha256', $hash, $key, $iteration, 0, true));
}

/* usage:
   $hash = hash_password('passw@rd', 'hashkey', (Object)[ 'gen' => 'OO7', ...]);
 */
...