<String Reference PHP
Определение и использование
crypt() функция возвращает хэш строку , используя DES, Blowfish или MD5 алгоритмы.
Эта функция ведет себя по-разному на разных операционных системах. PHP проверяет, какие алгоритмы доступны и какие алгоритмы для использования при установке.
Параметр соль является необязательным. Тем не менее, crypt() создает слабый пароль без соли. Убедитесь в том, чтобы указать достаточно сильную соли для лучшей безопасности.
Есть некоторые константы, которые используются вместе с crypt() функции. Значение этих констант устанавливается PHP, когда он установлен.
Константы:
- [CRYPT_STD_DES] - Стандарт DES на основе хэша с двумя символами соли из алфавита "./0-9A-Za-z" . Использование недопустимых символов в соли вызовет эту функцию, чтобы потерпеть неудачу.
- [CRYPT_EXT_DES] - Extended хэш DES на основе с девяти символов соли в состоящей из подчеркивания с последующим 4 байта счетчика итерации и 4 байта соли. Они кодируются как печатаемые символы, 6 бит на символ, наименее значимый характер в первую очереди. Значения от 0 до 63 кодируются как "./0-9A-Za-z" . Использование недопустимых символов в соли вызовет функцию на провал.
- [CRYPT_MD5] - MD5 хеширования с солью 12 символов, начиная с $ 1 $
- [CRYPT_BLOWFISH] - Blowfish хеширования с солью , начиная с $ 2a $, $ 2x $ или $ 2Y $, два параметра цифры затрат "$" , и 22 символов из алфавита "./0-9A-Za-z" , Использование символов за пределами алфавита вызовет эту функцию, чтобы вернуть строку нулевой длины. "$" Параметр является базовым-2 логарифм подсчета итераций для базового Blowfish-колотил хэширования algorithmeter и должна быть в диапазоне 04-31. Значения вне этого диапазона вызовет функцию на провал.
- [CRYPT_SHA_256] - SHA-256 хэш с солью 16 символов, начиная с $ 5 $. Если строка начинается с солью "rounds=<N>$" , числовое значение N используется , чтобы указать , сколько раз должен быть выполнен цикл хеширования, так же, как параметр затрат на Blowfish. Количество раундов по умолчанию 5000, есть минимум 1000 и максимум 999.999.999. Любой выбор N вне этого диапазона будет обрезан до ближайшего предела.
- [CRYPT_SHA_512] - SHA-512 хэш с солью 16 символов, начиная с $ 6 $. Если строка начинается с солью "rounds=<N>$" , числовое значение N используется , чтобы указать , сколько раз должен быть выполнен цикл хеширования, так же, как параметр затрат на Blowfish. Количество раундов по умолчанию 5000, есть минимум 1000 и максимум 999.999.999. Любой выбор N вне этого диапазона будет обрезан до ближайшего предела.
В системах , где эта функция поддерживает несколько алгоритмов, приведенные выше константы устанавливаются в "1" , если поддерживается и "0" в противном случае.
Note: Там нет функции расшифровывать. crypt() функция использует алгоритм односторонней.
Синтаксис
crypt( str,salt )
параметр | Описание |
---|---|
str | Необходимые. Задает строку хэширования |
salt | Необязательный. Строка соли основывать на хеширования |
Технические подробности
Возвращаемое значение: | Возвращает закодированную строку или строку, которая короче, чем 13 символов и гарантированно отличаться от соли на провале |
---|---|
PHP версии: | 4+ |
Changelog: | $ 2x $ и $ 2y режимы $ Blowfish в PHP 5.3.7 были добавлены, чтобы иметь дело с потенциальными высокобитными атаками. Константы SHA-256 и SHA-512 были добавлены в PHP 5.3.2. По состоянию на PHP 5.3.2, Blowfish поведение на недействительных раундов возвращает "failure" строка ("*0" or "*1") , вместо того , чтобы откатиться к DES. По состоянию на PHP 5.3.0, PHP содержит свою собственную реализацию склепе MD5, Standard DES, Extended DES и Blowfish алгоритмов и будет использовать, что если система не имеет поддержки одного или нескольких алгоритмов. |
пример
Пример 1
В этом примере мы будем тестировать различные алгоритмы:
<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES:
".crypt('something','_S4..some')."\n<br>";
}
else
{
echo
"Extended DES not supported.\n<br>";
}
// 12 character salt
starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5:
".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo
"MD5 not supported.\n<br>";
}
// Salt starting with $2a$. The two
digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is
5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256:
".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}
// 16
character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512:
".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>
Результат выполнения кода выше , может быть (depending on the operating system) в (depending on the operating system) :
Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5:
$1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish:
$2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256:
$5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512:
$6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.
<String Reference PHP