PHP crypt password


у меня есть две мелочи, о шифрование проходит, у меня есть этот код:

1- $mainpass = "test123";

$md5pass = md5($mainpass);
$sha1pass = sha1($md5pass);
$cryptpass = crypt($sha1pass, 'st');

echo ($cryptpass);

Которого output: 'stSuGIR46GScI'.

Но я не понимаю, потому что это (ниже) не равно и output постоянно меняется:

$mainpass = "test123";
$cryptpass = crypt(sha1(md5($mainpass)));

echo ($cryptpass);

По моей логике было бы эквивалентно.

2. И, в проверки и подтверждения пароля, как бы изменить код ниже, который имеет только md5, чтобы соответствовать шифрования сделана в верхней части (в случае, если правильный)?

if(isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
Author: Maniero, 2014-03-25

1 answers

Case 1:

И В первом примере, вы добавляете Соль ('st') при вызове функции crypt. Считаю, что проблема находится там, так как это единственная разница видна. Измените второй пример:

$cryptpass = crypt(sha1(md5($mainpass)), 'st');

Case 2:

, Следуя той же логике, измените строку, где пароль":

$password = crypt(sha1(md5($_POST['password'])), 'st');
 2
Author: Michael Siegwarth, 2014-03-25 10:51:53