crc32
echo
Функции обработки строк
PHP Manual

# crypt

(PHP 4, PHP 5)

crypt — Необратимое шифрование (хэширование)

### Описание

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

crypt() возвращает строку, зашифрованную по стандартному алгоритму UNIX, основанному на DES, или другому алгоритму, имеющемуся в системе. Аргументами являются строка, которую требуется зашифровать, и необязательная salt-последовательность, на которой основывается шифрование. Для получения дополнительной информации обратитесь к руководству UNIX по функции crypt.

Если аргумент `salt` не передан, он будет выбран случайным образом.

Некоторые операционные системы поддерживают несколько алгоритмов шифрования. Иногда стандартный алгоритм, основанный на DES, заменяется алгоритмом на основе MD5. Вид шифрования определяется salt-последовательностью. При инсталляции PHP определяет, какие алгоритмы шифрования поддерживает crypt. Если salt-последовательность не передана, будет автоматически сгенерирована стандартная случайная двухсимвольная salt-последовательность, если только в системе по умолчанию не используется MD5, в этом случае будет создана случайная salt-последовательность, совместимая с MD5. Предопределенная константа CRYPT_SALT_LENGTH позволяет определить, используется ли в системе стандартная двухсимвольная salt, или 12-символьная.

Если вы опускаете аргумент `salt` , вы должны знать, что salt генериуется только при первом вызове этой функции, и для всех последующих вызовов используется полученное значение. Это в конечном итоге может привести к снижению безопасности.

Стандартная функция crypt() на основе DES копирует salt в начало возвращаемой строки. Кроме того, она использует только первые восемь символов строки `str` , поэтому для различных строк, первые восемь символов в которых совпадают, будет возвращаться один и тот же результат (при использовании одинаковых salt-последовательностей).

На системах, где функция crypt() поддерживает несколько алгоритмов шифрования, следующие константы устанавливаются в 0 или 1 в зависимости от доступности соответствующего алгоритма:

- CRYPT_STD_DES - Стандартное DES-шифрование с двухсимвольной salt
- CRYPT_EXT_DES - Расширенное DES-шифрование с девятисимвольной salt
- CRYPT_MD5 - MD5-шифрование с 12-символьной salt, начинающейся с $1$
- CRYPT_BLOWFISH - Blowfish-шифрование с 16-символьной salt, начинающейся с $2$

> Замечание: Функция расшифровки отсутствует, так как crypt() использует необратимый алгоритм шифрования.

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

`<?php
$password = crypt('My1sTpassword'); // salt будет сгенерирована автоматически
// Для проверки пароля в качестве salt следует передавать результат работы
// crypt() целиком во избежание проблем при использовании различных
// алгоритмов (как уже было отмечено выше, стандартный DES-алгоритм
// использует 2-символьную salt, а MD5 - 12-символьную.
if (crypt($user_input, $password) == $password) {
echo "Пароль верен !";
}
?>`

Пример #2 Использование crypt() с файлом .htpasswd

При создании пароля для использования в файле .htpasswd Apache, нужно использовать 2 первых символа пароля в качестве salt.

`<?php
// пароль
$password = 'mypassword';
// получение хэша
$hash = crypt($password, substr($password, 0, 2));
?>`

См. также описание функции md5() и модуля Mcrypt.

crc32
echo
Функции обработки строк
PHP Manual