Функция PHP склепа ()
Определение и использование
склепа () функция возвращает использование DES, Blowfish или алгоритма MD5 для шифрования строки.
В различных операционных системах, различное поведение функции, некоторые операционные системы поддерживают более одного типа алгоритма. При установке, PHP проверит, что доступно и то, что алгоритм алгоритма.
Точные алгоритмы основываются на формат и длину солевого аргумента. соль может сделать шифрование более безопасным за счет увеличения числа по конкретной строки с конкретным методом шифрования, чтобы сформировать строку.
Вот некоторые константы и склепа () функция используется с. Постоянное значение устанавливается при установке с помощью PHP.
Константа:
- [CRYPT_SALT_LENGTH] - по умолчанию длину шифрования. Использование стандартного шифрования DES, длиной 2
- [CRYPT_STD_DES] - шифрование DES на основе стандарта соли 2-х символов, из алфавита "./0-9A-Za-z". Недопустимые символы в соли приведет к функции не удалось.
- [CRYPT_EXT_DES] - Extended шифрования DES на основе имеют соли 9 символов подчеркивания за 4 байта счетчик итераций и 4 байта солевого состава. Они кодируются как печатные символы, каждый из 6, наименее значимого характера в первую очередь. 0-63 значение кодируется как "./0-9A-Za-z". Недопустимые символы в соли приведет к функции не удалось.
- [CRYPT_MD5] - шифрование MD5 имеют соли 12 символов, начиная с $ 1 $.
- [CRYPT_BLOWFISH] - Blowfish шифрование имеет $ 2a $, $ 2x $ или $ 2y $ начало соли, параметр стоимости двузначный "$", а также из алфавита "./0-9A-Za-z" 22 символов. Используйте кроме символов алфавита вызовет функция возвращает строку 0 '. "$" Параметр является базой 2 логарифм числа итераций Иглобрюхие алгоритм хеширования должен быть в 04-31 диапазоне. Значения вне этого диапазона приведет к функции не удалось.
- [CRYPT_SHA_256] - шифрование SHA-256 имеет соли 16 символов, начиная с $ 5 $. Если соль строка "раундов = <N> $" начинается, цифровое значение N раз хэш используется для обозначения цикла выполняется, который аналогичен параметру стоимости Blowfish. Число циклов по умолчанию составляет 5000, минимальное значение составляет 1000, максимум 999999999. N любое значение вне этого диапазона будут преобразованы в ближайшей граничного значения.
- [CRYPT_SHA_512] - шифрование SHA-512 имеет соли 16 символов, начиная с $ 6 $. Если соль строка "раундов = <N> $" начинается, цифровое значение N раз хэш используется для обозначения цикла выполняется, который аналогичен параметру стоимости Blowfish. Число циклов по умолчанию составляет 5000, минимальное значение составляет 1000, максимум 999999999. N любое значение вне этого диапазона будут преобразованы в ближайшей граничного значения.
На Данная функция поддерживает систему несколько алгоритмов, если эта функция поддерживается выше константа имеет значение "1", в противном случае он устанавливается в "0"
Примечание: Там нетсоответствующей функции дешифрования. крипты () использует алгоритм односторонний.
грамматика
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
технические детали
Возвращает: | Возвращает зашифрованную строку, если она не сможет вернуться менее 13 символов и гарантия строки отличается от соли. |
---|---|
Версия PHP: | 4 + |
Журнал обновления: | В PHP 5.3.7, добавьте $ 2x $ и $ 2y режимы $ Blowfish, чтобы справиться с высокой потенциальной атаки. В PHP 5.3.2, добавить постоянную SHA-256 и SHA-512. Начиная с PHP 5.3.2 и далее, Blowfish в недопустимом цикле будет возвращать "провал" строку ( "* 0" или "* 1"), а не обратно DES. Начиная с PHP 5.3.0, PHP поставляется с шифрованием MD5 для достижения, достижения стандартного DES, Blowfish и расширенный DES алгоритм для достижения. Если система не поддерживает эти алгоритмы будут использовать собственный алгоритм PHP. |
примеров
Пример 1
В этом примере мы будем тестировать различные алгоритмы:
// 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.";
}
?>
Приведенный выше код выводит следующее (в зависимости от операционной системы):
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.
PHP Строка Ссылка