PHP crypt () возвращает * 0 строку ошибки в версии 5.6.4, но не 5.4,

echo crypt('test', "$2a$07$"); создает длинный хеш в PHP версии 5.4.16, но выдает «строку ошибки» *0 в 5.6.4.

Читая документы PHP по crypt (), я до сих пор не совсем понимаю, почему, хотя в журнале изменений упоминается *1 возвращается вместо *0 в зависимости от обстоятельств. (http://php.net/manual/en/function.crypt.php)

В чем причина *0 возвращается в этом случае? Прекратил ли PHP версии 5.4 терпеть дурную соль формы? $2a$07$?

4

Решение

Определение Blowfish говорит, что вы должны определить строку после третьего $,

<?php
echo crypt('test',  "$2a$07$mystring");
?>

Хэширование Blowfish с солью выглядит следующим образом: «$ 2a $», «$ 2x $» или «$ 2y $», двухзначный параметр стоимости, «$» и 22 символа из алфавита »./0-9A-Za -z»

Когда вы не определяете эту строку, вы получаете ошибку *0,

5.6.5 Когда в качестве соли указана строка ошибки «* 0», теперь будет возвращаться «* 1» для согласованности с другими реализациями шифрования. До этой версии PHP 5.6 некорректно возвращал хэш DES.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]