Я получаю следующую ошибку пароля. У меня есть вариант PHP 7.2 (для PHP версии 5.5 эта проблема не возникает), следующий код:
function make_key($length)
{
$valid_chars = 'abcdefghijkilmnoprstwxyzABCDEFGHIJKMNOPRSTWXYZIL0123456789';
$random_string = "";
$num_valid_chars = strlen($valid_chars);
for ($i = 0; $i < $length; $i++)
{
$random_pick = mt_rand(1, $num_valid_chars);
$random_char = $valid_chars[$random_pick-1];
$random_string .= $random_char;
}
return $random_string;
}
/**
* Generate random coupon code
* @param int $length
* @return string
*/
function generate_code($length=6)
{
// Generate array range
$range = array_merge(range('A', 'Z'), range(0, 9));
$keyCount = count($range) - 1;
$code = '';
for ($i = 0; $i < $length; $i++) {
$rand = mt_rand(0, $keyCount);
$code .= $range[$rand];
}
return $code;
}
/**
* Generates a random SHA-256 salt ($5$)
* @return string
*/
function generate_salt() {
return '$5$'.substr(crypt(uniqid()), 3, 13);
}
i eperire выглядит так: return '$ 5 $'. Substr (crypt (unigid ()), 3, 13) ; , вы можете помочь мне, как я могу усилить этот код, чтобы у меня больше не было проблем? Спасибо
Я предлагаю вам использовать/или перейти к/ функциям password_hash() и password_verify().
Crypt не является безопасным для двоичных файлов..
Параметр соли является необязательным. Однако crypt() создает слабый хэш без соли и выдает ошибку E_NOTICE без нее. Обязательно укажите достаточно сильную соль для большей безопасности.
function generate_salt($len = 8) {
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()-=_+';
$l = strlen($chars) - 1;
$str = '';
for ($i = 0; $i<$len; ++$i) {
$str .= $chars[rand(0, $l)];
}
return $str;
}
$generate_salt = generate_salt($len = 8); $str = "$5$" . $ сгенерировать_соль . "$"; $c = crypt(uniqid(), $str); эхо $c; // $5$ot6wbbf+$wtwWCC8wmE01cNeHGGLMGqkWqiDWyHWfdXQvEOLI7.5
Это правильный способ создания соли для функции шифрования.