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.
Veja também md5() e a extensão Mcrypt.