проблема php crypt - PullRequest
       2

проблема php crypt

0 голосов
/ 27 мая 2011

Я пытаюсь хранить пароли в зашифрованном формате, но, похоже, он работает неправильно. Вот код php, который я использую.

function encryptMe($input, $salt){
    $output = crypt($input,$salt);
return $output;
}

function getSalt(){
   //set number of repititions
   $reps="5000";

   $salt = substr(str_replace('+', '.', base64_encode(
            pack('N4', mt_rand(), mt_rand(), mt_rand(), mt_rand())
            )), 0, 16);
   $salt = "$6$"."rounds=".$reps."$".$salt;     
   return $salt;    
}

В моем коде также есть следующее утверждение.

$input['password'] = $_POST['password'];
$salt = getSalt();
$input['password'] = encryptMe($input['password'],$salt);

Я запускал это несколько раз с другой солью, но одним и тем же паролем и продолжаю получать один и тот же хеш. Изменение соли, кажется, не имеет никакого эффекта, и я не могу понять, что не так. Может кто-нибудь взглянуть на этот код и помочь мне?

Также есть ли способ убедить, что используется SHA512?

1 Ответ

1 голос
/ 27 мая 2011

Это потому, что crypt () возвращает только несколько первых символов, поэтому входные данные, даже разные, могут по-прежнему возвращать одну и ту же строку, поскольку изменились только последние символы.

Альтернативным способом является использование hash () для SHA-256. Кто-то поделился с вами очень интересной ссылкой в ​​вашем посте.

Редактировать

Вот как vBulletin шифрует пароли. Не знаю, используют ли они этот метод до сих пор.

$password_hash = md5(md5($password_text) . $user_salt);
// $user_salt is a random three character string stored 
// in the user table as 'salt'.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...