<PHP seqüência de referência
Definição e Uso
A crypt() função devolve uma cadeia hash usando algoritmos DES, Blowfish ou MD5.
Esta função se comporta diferente em diferentes sistemas operacionais. PHP verifica o que estão disponíveis algoritmos e quais algoritmos para usar quando ele está instalado.
O parâmetro sal é opcional. No entanto, crypt() cria uma senha fraca sem o sal. Certifique-se de especificar um sal suficiente forte para uma melhor segurança.
Existem algumas constantes que são utilizadas em conjunto com a crypt() função. O valor destas funções são definidas pelo PHP quando é instalado.
constantes:
- [CRYPT_STD_DES] - Standard de hash DES-based com duas sal personagem do alfabeto "./0-9A-Za-z" . Usando caracteres inválidos no sal irá fazer esta função falhar.
- [CRYPT_EXT_DES] - Extensão hash com base-DES com um sal de nove caracteres que consiste de um sublinhado seguido por 4 bytes de contagem de iteração e 4 bytes de sal. Estes são codificados como caracteres de impressão, 6 bits por caracter, carácter menos significativo em primeiro lugar. Os valores de 0 a 63 são codificados como "./0-9A-Za-z" . Usando caracteres inválidos no sal fará com que a função a falhar.
- [CRYPT_MD5] - hash MD5 com um sal de 12 caracteres começando com $ 1 $
- [CRYPT_BLOWFISH] - hash Blowfish com um sal começando com $ 2-A $, $ $ 2x, ou 2y $ $, a dois parâmetros de custo dígito "$" , e 22 caracteres do alfabeto "./0-9A-Za-z" . O uso de caracteres fora do alfabeto irá fazer esta função para devolver uma cadeia de comprimento zero. O "$" parâmetro é o logaritmo de base 2 da contagem de iteração para a algorithmeter hash bateu-Blowfish subjacente e deve estar na faixa de 04-31. Os valores fora desta faixa fará com que a função a falhar.
- [CRYPT_SHA_256] - hash SHA-256 com um sal de 16 caracteres começando com 5 $ $. Se a seqüência de sal começa com "rounds=<N>$" , o valor numérico do N é usado para indicar quantas vezes o loop hashing deve ser executado, bem como o parâmetro de custo em Blowfish. O número padrão de rodadas é de 5000, há um mínimo de 1000 e um máximo de 999.999.999. Qualquer selecção de N, fora desta gama vai ser truncado para o limite mais próximo.
- [CRYPT_SHA_512] - hash SHA-512 com um sal de 16 caracteres começando com $ 6 $. Se a seqüência de sal começa com "rounds=<N>$" , o valor numérico do N é usado para indicar quantas vezes o loop hashing deve ser executado, bem como o parâmetro de custo em Blowfish. O número padrão de rodadas é de 5000, há um mínimo de 1000 e um máximo de 999.999.999. Qualquer selecção de N, fora desta gama vai ser truncado para o limite mais próximo.
Em sistemas onde esta função suporta vários algoritmos, as constantes acima são ajustados para "1" se suportado e "0" caso contrário.
Note: Não há nenhuma função decrypt. A crypt() função utiliza um algoritmo de sentido único.
Sintaxe
crypt( str,salt )
Parâmetro | Descrição |
---|---|
str | Requeridos. Especifica a cadeia a ser hash |
salt | Opcional. Uma seqüência de sal para basear o hash em |
Detalhes técnicos
Valor de retorno: | Retorna a string codificada ou uma cadeia que é menor do que 13 caracteres e é garantido para ser diferente do sal em caso de falha |
---|---|
PHP Versão: | 4+ |
changelog: | $ 2 x $ e $ 2y modos $ Blowfish foram adicionados no PHP 5.3.7 para lidar com possíveis ataques de alta bit. As constantes de SHA-256 e SHA-512 foram adicionados em PHP 5.3.2. A partir do PHP 5.3.2, o comportamento Blowfish em rondas inválidos retorna o "failure" corda ("*0" or "*1") , em vez de cair de volta para DES. A partir do PHP 5.3.0, PHP contém sua própria implementação para a cripta MD5, DES Padrão, Extensão DES e os algoritmos Blowfish e vai usar que se o sistema carece de suporte para um ou mais dos algoritmos. |
Exemplo
Exemplo 1
Neste exemplo vamos testar os algoritmos diferentes:
<?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.";
}
?>
A saída do código acima poderia ser (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.
<PHP seqüência de referência