CRYPT(3) | Library functions | CRYPT(3) |
crypt - encriptação de senhas e dados
#define _XOPEN_SOURCE
#include <unistd.h>
char *crypt(const char *key, const char *salt);
crypt é a função de encriptação de senhas. É baseada no algoritmo DES, que é implementado de modo a, entre outras coisas, dificultar implementações em hardware de buscas de chaves.
key é a senha digitada pelo usuário.
salt é uma string de dois caracteres do conjunto [a–zA–Z0–9./]. Esta string pode modificar o algoritmo de 4096 modos diferentes.
Uma chave de 56 bits é obtida usando os 7 bits menos significativos de key. Esta chave codifica repetidamente uma string constante (normalmente uma string só de zeros), e o valor resultante aponta para a senha codificada: uma seqüência de 13 caracteres ASCII imprimíveis (sendo os primeiros dois o salt). O valor retornado aponta para dados estáticos cujo conteúdo é sobrescrito a cada chamada da função.
Aviso: a chave tem 2**56 7.2e16 valores possíveis. Podem ser feitas buscas exaustivas com computadores maciçamente paralelos. Programas como o crack(1), testam as senhas mais usadas por pessoas. Estas senhas não devem, portanto, ser nomes ou palavras comuns. recomenda-se usar um programa como passwd(1) que procure senhas fracas durante o processo de seleção.
O próprio algoritmo DES tem características que tornam o uso de crypt(3) uma má escolha para qualquer outra coisa que não senhas. Se você estiver pensando em usá-la para criptografia, não o faça, mas procure um bom livro sobre criptografia e uma das bibliotecas DES (são fáceis de encontrar).
SVID, X/OPEN, BSD 4.3
Paulo César Mendes <drpc@ism.com.br> (tradução) xxxxxxxxxxxxxxxxxxxxxxxxx <xxx@xxxxxx.xxx.xx> (revisão)
September 3, 1994 |