PHP função crypt ()
Definição e Uso
crypt () devolve o uso de DES, Blowfish, ou algoritmo MD5 para criptografar uma string.
Em diferentes sistemas operacionais, comportamento diferente da função, alguns sistemas operacionais suportam mais de um tipo de algoritmo. Ao instalar, PHP irá verificar o que está disponível e que o algoritmo algoritmo.
Os algoritmos exatos contar com o formato e comprimento do argumento sal. sal pode fazer a criptografia mais segura, aumentando o número por uma corda especial com um método de criptografia específica para gerar a string.
Aqui estão algumas constantes e crypt () função é usada com. O valor da constante é definida no momento da instalação do PHP.
constante:
- [CRYPT_SALT_LENGTH] - padrão comprimento de criptografia. A utilização de encriptação DES standard, um comprimento de 2
- [CRYPT_STD_DES] - encriptação DES baseada em um padrão de sal de 2 caracteres, do alfabeto "./0-9A-Za-z". caracteres inválidos no sal levará a função falhou.
- [CRYPT_EXT_DES] - Extensão criptografia baseada em DES têm sal 9 caracteres por um sublinhado para trás com 4 bytes de contagem de iteração e 4 bytes de composição de sal. Estes são codificados como caracteres imprimíveis, cada um dos 6, caráter menos significativo primeiro. 0-63 valor é codificado como "./0-9A-Za-z". caracteres inválidos no sal levará a função falhou.
- [CRYPT_MD5] - criptografia MD5 tem sal 12 caracteres, começando com $ 1 $.
- [CRYPT_BLOWFISH] - criptografia Blowfish tem um $ 2a $, $ 2x $ ou $ 2a $ início de sal, um parâmetro de custo de dois dígitos, "$", bem como do alfabeto "./0-9A-Za-z" 22 caracteres. Use excepção caracteres do alfabeto vai desencadear função retorna uma string de 0 do. "$" Parâmetro é o logaritmo de base 2 o número de iterações algoritmo de hashing Blowfish deve estar na gama de 04-31. Valores fora deste intervalo levará a função falhou.
- [CRYPT_SHA_256] - criptografia SHA-256 tem sal 16 caracteres, começando com US $ 5 $. Se a cadeia de sal "rounds = <N> $" começa, o valor digital da N vezes o hash usado para indicar o laço é executado, que é similar ao parâmetro de custo Blowfish. O número padrão de ciclos é de 5000, o valor mínimo é de 1000, o máximo é de 999.999.999. N é um valor fora deste intervalo será convertido para o valor limite mais próximo.
- [CRYPT_SHA_512] - criptografia SHA-512 tem sal 16 caracteres, começando com US $ 6 $. Se a cadeia de sal "rounds = <N> $" começa, o valor digital da N vezes o hash usado para indicar o laço é executado, que é similar ao parâmetro de custo Blowfish. O número padrão de ciclos é de 5000, o valor mínimo é de 1000, o máximo é de 999.999.999. N é um valor fora deste intervalo será convertido para o valor limite mais próximo.
Nesta função suporta sistema de vários algoritmos, se suportado acima constante é definido como "1", caso contrário, ele é definido como "0"
Nota: Não hánenhuma função de decodificação correspondente. crypt () função usa um algoritmo unidirecional.
gramática
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
detalhes técnicos
retorna: | Devoluções criptografado corda, se ele falhar para retornar menos de 13 caracteres e uma garantia da cadeia é diferente do sal. |
---|---|
versão do PHP: | 4+ |
log Update: | No PHP 5.3.7, adicionar os $ 2x $ e $ 2y modos $ Blowfish para lidar com ataque alto potencial. No PHP 5.3.2, adicione a constante SHA-256 e SHA-512. Desde o PHP 5.3.2 em diante, Blowfish em um loop inválido retornará "fracasso" string ( "* 0" ou "* 1"), ao invés de voltar para DES. A partir do PHP 5.3.0, PHP vem com criptografia MD5 para alcançar, atingir o padrão DES, Blowfish e estendeu algoritmo DES de alcançar. Se o sistema não suporta estes algoritmos usará próprio algoritmo de PHP. |
Exemplos
exemplo 1
Neste exemplo, vamos testar diferentes algoritmos:
// 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.";
}
?>
O código acima exibe o seguinte (dependendo do sistema operacional):
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 seqüência de referência