Обучение/Помощь новичкам | crypt
Тема закрыта by
SNEG
crypt('строка', 'соль');
Как сюда CRYPT_BLOWFISH прикрутить ?
Почитал официальную документацию как всегда ничего не понял
________
посл. ред. 21.07.2023 в 22:42; всего 2 раз(а); by SNEG
Как сюда CRYPT_BLOWFISH прикрутить ?
Почитал официальную документацию как всегда ничего не понял
________
посл. ред. 21.07.2023 в 22:42; всего 2 раз(а); by SNEG
В доке указано, что тип шифрования определяется по соли
========
CRYPT_BLOWFISH - Blowfish-шифрование со следующей солью: "$2a$", "$2x$" или "$2y$", весовой параметр из двух цифр, "$" и 22 цифры из алфавита "./0-9A-Za-z". Использование других символов в соли повлечёт за собой возврат пустой строки. Весовой параметр из двух цифр является двоичным логарифмом счётчика итераций нижележащего хеширующего алгоритма, основанного на Blowfish, и должен быть в диапазоне 04-31, значения вне данного диапазона вызовут отказ crypt(). Хеши "$2x$" потенциально слабые; Хэши "$2a$" совместимы и смягчают эту слабость. Для новых хэшей следует использовать "$2y$".
========
CRYPT_BLOWFISH - Blowfish-шифрование со следующей солью: "$2a$", "$2x$" или "$2y$", весовой параметр из двух цифр, "$" и 22 цифры из алфавита "./0-9A-Za-z". Использование других символов в соли повлечёт за собой возврат пустой строки. Весовой параметр из двух цифр является двоичным логарифмом счётчика итераций нижележащего хеширующего алгоритма, основанного на Blowfish, и должен быть в диапазоне 04-31, значения вне данного диапазона вызовут отказ crypt(). Хеши "$2x$" потенциально слабые; Хэши "$2a$" совместимы и смягчают эту слабость. Для новых хэшей следует использовать "$2y$".
В доке указано, что тип шифрования определяется по соли
========
CRYPT_BLOWFISH - Blowfish-шифрование со следующей солью: "$2a$", "$2x$" или "$2y$", весовой параметр из двух цифр, "$" и 22 цифры из алфавита "./0-9A-Za-z". Использование других символов в соли повлечёт за собой возврат пустой строки. Весовой параметр из двух цифр является двоичным логарифмом счётчика итераций нижележащего хеширующего алгоритма, основанного на Blowfish, и должен быть в диапазоне 04-31, значения вне данного диапазона вызовут отказ crypt(). Хеши "$2x$" потенциально слабые; Хэши "$2a$" совместимы и смягчают эту слабость. Для новых хэшей следует использовать "$2y$".
$salt = '';
crypt('тест', '$2y$'.$salt);
от 4 до 31 символ длина соли может быть ?
Так работает ?)
________
посл. ред. 21.07.2023 в 23:14; всего 2 раз(а); by SNEG
echo crypt('string', '$2y$15$'.time()).;
Почему ошибка *0 ?
________
посл. ред. 22.07.2023 в 01:53; всего 2 раз(а); by SNEG
Почему ошибка *0 ?
________
посл. ред. 22.07.2023 в 01:53; всего 2 раз(а); by SNEG
php
<?php
// Генерируем соль для CRYPT_BLOWFISH
function generate_blowfish_salt($cost = 10) {
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./';
$salt = sprintf('$2a$%02d$', $cost);
for ($i = 0; $i < 22; $i++) {
$salt .= $characters[mt_rand(0, 63)];
}
return $salt;
}
// строка для хэширования
$string = 'password123';
// Генерируем соль
$salt = generate_blowfish_salt();
// Хэшируем строку с помощью CRYPT_BLOWFISH
$hashed_string = crypt($string, $salt);
// Выводим результат
echo "Строка: " . $string . "<br>";
echo "Соль: " . $salt . "<br>";
echo "Хэш: " . $hashed_string . "<br>";
?>Если всё это для хранения паролей, то в php уже есть встроенные функции password_hash password_verify и соль автоматически генерируется
Они делают абсолютно тоже самое (по сути это алиас к функции crypt) НО встроенные функции php работают быстрее, чем то, что Вы сами сейчас создаёте ибо встроенные функции - это по сути функции написанные на языке С
________
посл. ред. 22.07.2023 в 13:25; всего 1 раз(а); by SNEG
php
// Исходная строка, которую необходимо хэшировать
$string = "my_secret_password";
// Создаем хэш от исходной строки
$hashedString = password_hash($string, PASSWORD_BCRYPT);
// В данном примере $hashedString представляет хэш, который должны сохранить в базе данных
// Теперь предположим, что у нас есть вторая версия $string, которую нужно сравнить с исходным хэшем
$secondString = "my_secret_password";
// Сравниваем хэши без уязвимости по времени
if (hash_equals($hashedString, password_hash($secondString, PASSWORD_BCRYPT))) {
echo "Хэши совпадают.";
} else {
echo "Хэши не совпадают.";
}Стр.: 1, 2
