CRYPT(3)

NOMBRE
crypt - encriptación de passwords y datos

SINOPSIS
#include <unistd.h>

char *crypt(const char *key, const char *salt);

DESCRIPCION
crypt es la función de encriptación de passwords. Está basada en el algoritmo DES (Data Encryption Standard) con algunas variaciones tendientes (junto con otras cosas) a desalentar el uso de implementaciones hardware de buscadores de claves.

key es un password tipeado por el usuario.

salt es una cadena de dos caracteres elegidas del conjunto [a–zA–Z0–9./]. Esta cadena es usada para variar el algoritmo en uno de 4096 modos diferentes.

Al tomar el 7 bit más bajo de cada caracter de key, una clave de 56 bits es obtenida. Esta clave de 56 bits es usada para encryptar repetidamente una cadena constante (usualmente una cadena consistente de todos ceros). El valor retornado apunta al password encriptado, una serie de 13 imprimibles caracteres (los primeros dos caracteres representan salt en si). El valor retornado apunta a los datos constantes cuyo contenido es sobreescrito por cada llamada.

Cuidado: El espacio de claves consiste de 2**56 igual a 7.2e16 valores posibles. Exhaustivas búsquedas en este espacio de claves son posibles usando computadoras paralelas. Software, como crack(1), estan disponibles y pueden buscar en la porción del espacio de claves que es generalmente usados por los humanos para sus passwords. Dado que, la selección de passwords debe, como mínimo, permitir palabras y nombres comunes, el uso del programa passwd(1) que chequea passwords vulnerables durante el proceso de selección es recomendado.

El algoritmo DES en si tiene unas peculiaridades que hacen el uso de la interface crypt(3) sea una pobre elección para otro fin más allá de la autenticación de passwords. Si está planeando usar la interface crypt(3) para un proyecto criptográfico, no lo haga !: obtenga un buen libro sobre encriptación y una de las ampliamente disponibles librerias DES.

CONFORME A
SVID, X/OPEN, BSD 4.3

VER TAMBIEN
login(1), passwd(1), encrypt(3), getpass(3), passwd(5)