crypt
(PHP 4, PHP 5)
crypt — Único caminho de codificação de string (hashing)
Descrição
crypt() retornará uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou ou algoritmos alternativos disponÃveis no sistema. Os argumentos são uma string para ser criptografada e uma string opcional para basear em qual encriptação está. Veja a página de encriptação Unix para mais informação.
Se o argumento salt não é fornecido, um argumento aleatório será gerado pelo PHP.
Alguns SO suportam mais de um tipo de codificação. De fato, algumas vezes a codificação Standard DES-based é substituÃdo por MD5-based . O tipo de codificação é definido pelo argumento salt. Na instalação, o PHP determina as possÃveis funções de codificação e aceitará salts para outros tipos. Se nenhum salt é fornecido, o PHP auto-gera um salt padrão de 2 caracateres por definição, a menos que o tipo de codificação padrão do sistema seja MD5, nesse caso um salt MD5-compatible aleatório será gerado. O PHP define uma constante com nome CRYPT_SALT_LENGTH que dirá se um salt de 2 caracteres aplica-se ao seu sistema ou se o salt mais comprido de 12 caracteres é aplicavél.
Se você está usando um salt fornecido, você está ciente que o salt é gerado uma vez. Se você está chamando essa função repetidamente, isto pode afetar a aparência e a segurança.
O Standard DES-based crypt() retorna o salt como o primeiro two characters da saÃda. Ele também usa apenas os oito primeiros caracteres da str , então strings longas que começam com os mesmos oito caracteres gerarão o mesmo resultado (quando o mesmo salt é usado).
Em sistemas onde a função crypt() suporta variados tipos de codificação, as seguintes funções são definidas para 0 ou 1 a depender se um dado tipo está disponÃvel:
- CRYPT_STD_DES - Codificação Standard DES-based com um salt de 2 caracteres
- CRYPT_EXT_DES - Codificação Extended DES-based com um salt de 9 caracateres
- CRYPT_MD5 - Codificação MD5 com um salt de 12 caracteres começando com $1$
- CRYPT_BLOWFISH - Codificação Blowfish com um salt de 16 caracteres começando com $2$
Nota: Não há função de decodificação, desde que crypt() utiliza uma algorimo de um só caminho.
Example#1 crypt() exemplos
<?php
$password = crypt("My1sTpassword"); // let salt be generated
# You should pass the entire results of crypt() as the salt for comparing a
# password, to avoid problems when different hashing algorithms are used. (As
# it says above, standard DES-based password hashing uses a 2-character salt,
# but MD5-based hashing uses 12.)
if (crypt($user_input, $password) == $password) {
echo "Password verified!";
}
?>
Veja também md5() e a extensão Mcrypt.