Перейти к содержимому

crypt()

Функция crypt() используется для одностороннего хеширования строки. Синтаксис функции crypt() выглядит следующим образом:

Синтаксис PHP для crypt()

php
string crypt ( string $str [, string $salt ] )

Функция принимает два параметра: строку для хеширования ($str) и необязательный параметр соли ($salt). Параметр соли определяет алгоритм хеширования и параметры. В современных версиях PHP соль должна иметь определенный формат (например, $2y$, $6$) для выбора алгоритма, а не быть простой строкой.

Ниже приведен пример использования функции crypt():

Пример использования PHP crypt()

php
<?php
$str = "password123";
$salt = "abcd";
$encrypted_str = crypt($str, $salt);
echo $encrypted_str;
?>

В этом примере у нас есть строка, которую мы хотим захешировать с помощью функции crypt(). Мы передаем строку и значение соли в функцию crypt(), которая возвращает захешированную строку.

Вывод этого кода будет зависеть от использованной соли и алгоритма:


console
abIZtMrubNtSE

Как видите, функция crypt() вернула захешированную строку.

Ниже приведен еще один пример использования функции crypt() для проверки пароля:

Как использовать PHP crypt()?

php
<?php
$password = "password123";
$hashed_password = crypt($password, "abcd");
if (crypt($password, $hashed_password) == $hashed_password) {
    echo "Password is valid!";
} else {
    echo "Invalid password.";
}
?>

В этом примере мы проверяем пароль, повторно хешируя его с помощью ранее сгенерированного хеша. Обратите внимание, что crypt() автоматически извлекает соль из сохраненного хеша, когда второй аргумент является допустимой строкой хеша, что гарантирует использование того же алгоритма и параметров для сравнения. Если два результата совпадают, пароль является действительным.

Функция crypt() является устаревшим инструментом для одностороннего хеширования конфиденциальных данных, таких как пароли. Для современных PHP-приложений настоятельно рекомендуется использовать вместо нее функции password_hash() и password_verify(), поскольку они автоматически обеспечивают безопасную генерацию соли и выбор алгоритма. Использование коротких или простых солей с crypt() в современных версиях PHP может привести к слабому хешированию.

Мы надеемся, что эта статья помогла вам разобраться в работе функции crypt() в PHP. Если у вас возникнут вопросы или комментарии, пожалуйста, не стесняйтесь обращаться к нам.

Практика

Каково основное назначение функции crypt() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.