Обучение/Помощь новичкам | 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
