Как эффективно использовать crypt () - PullRequest
3 голосов
/ 21 июля 2011

Я не понимаю документацию на php.net . Похоже, что они используют зашифрованную версию пароля в качестве соли при тестировании на оригинальное шифрование.

Когда я вставляю крипту без дополнительного второго параметра (соли), я получаю разные зашифрованные версии одного и того же пароля. Это ожидаемое поведение?

Однако, если я вставлю второй параметр 'd4', я получу те же зашифрованные пароли для ввода того же пароля. Ожидаемое поведение.

До вставки при регистрации:

$pass = crypt('$pass', 'd4'); // after this I insert $pass into the mysql table

Тестирование при входе:

$pass = crypt($pass, 'd4'); // after this I test $pass against the mysql table

Документация по PHP.net:

<?php
$password = crypt('mypassword'); // let the salt be automatically generated

/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt($user_input, $password) == $password) {
   echo "Password verified!";
}
?> 

Как это работает?

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Поскольку crypt() использует только первые два символа (или все, что есть CRYPT_SALT_LENGTH) аргумента соли, передача зашифрованного пароля (из которых первые символы являются солью, изначально использовавшейся для его шифрования) делает правильную вещь .

Если аргумент соли не передан, генерируется и используется случайная соль.

0 голосов
/ 21 июля 2011

Если ваш вопрос ... Это нормально, что с определенными шифровальными шифрами вам возвращают разные зашифрованные строки для одного и того же пароля / ввода? Ответ - да. Не уверен, что вы говорите о соли. Соль это просто соль. В конце концов, это средство защиты и ничего не значит. Использование паролей или зашифрованных паролей в качестве соли не рекомендуется, но обычно используется некоторый случайный хэш (base64) фразы. Дайте мне знать, если это не так, и я попробую еще раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...