Provided by: manpages-es_1.55-10_all bug

NOMBRE

       crypt - cifrado de contraseñas y datos

SINOPSIS

       #define _XOPEN_SOURCE
       #include <unistd.h>

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

DESCRIPCIÓN

       crypt  es  la  función  de  cifrado  de contraseñas. Está basada en el algoritmo DES (Data
       Encryption  Standard)  con  algunas  variaciones  tendentes  (junto  con  otras  cosas)  a
       desalentar el uso de implementaciones por hardware de buscadores de claves.

       key es una contraseña tecleada por el usuario.

       salt  es  una cadena de dos caracteres elegidas del conjunto [azAZ09./]. Esta cadena se
       emplea para variar el algoritmo en uno de 4096 modos diferentes.

       Al tomar los 7 bit más bajos de cada uno de  los  primeros  ocho  carácteres  de  key,  se
       obtiene  una  clave de 56 bits. Esta clave de 56 bits se utiliza para cifrar repetidamente
       una cadena constante (usualmente una cadena  consistente  en  ceros).  El  valor  devuelto
       apunta  a  la contraseña cifrada, una serie de 13 caracteres imprimibles (los primeros dos
       caracteres representan al propio salt).  El valor devuelto apunta a datos estáticos  cuyos
       contenidos se sobreescriben en cada llamada.

       Cuidado:  El  espacio  de  claves  consiste  en 2**56 igual a 7.2e16 valores posibles. Son
       posibles  exhaustivas  búsquedas  en  este  espacio  de  claves   empleando   computadores
       masivamente  paralelos.  Existen programas, como crack(1), que pueden buscar en la porción
       del espacio de claves que es generalmente usado por los humanos para sus  contraseñas.  De
       aquí  que  en  la selección de contraseñas se debe, como mínimo, evitar palabras y nombres
       comunes. Se recomienda el uso de un programa passwd(1) que compruebe  durante  el  proceso
       de selección si la contraseña es vulnerable.

       El  algoritmo  DES  en sí tiene unas peculiaridades que hacen que el empleo de la interfaz
       crypt(3) sea una pobre elección para otro fin más allá de la autenticación de contraseñas.
       Si  está  planeando  utilizar  la  interfaz crypt(3) para un proyecto criptográfico, no lo
       haga: consiga un buen libro sobre cifrado y una de las ampliamente disponibles bibliotecas
       DES.

VALOR DEVUELTO

       Se devuelve un puntero a la contraseña cifrada.  En caso de error se devuelve NULL.

ERRORES

       ENOSYS La  función  crypt no fue implementada, probablemente por causa de restricciones de
              exportación de EE.UU.

EXTENSIÓN DE GNU

       La versión glibc2 de esta función tiene las siguientes  características  adicionales.   Si
       salt  es una cadena de carácteres que comienza con los tres carácteres "$1$" seguidos como
       mucho por ocho carácteres, y opcionalmente terminada en "$", en lugar de usar  la  máquina
       DES,  la  función  crypt  de glibc usa un algoritmo basado en MD5, y produce una salida de
       hasta 34 bytes, a saber "$1$<cadena>$", donde "<cadena>" representa hasta los 8 carácteres
       que   siguen  a  "$1$"  en  la  "sal",  seguidos  por  22  bytes  escogidos  del  conjunto
       [azAZ09./].  La clave al completo tiene significado propio (en lugar de solamente los 8
       primeros bytes).

       Los programas que usen esta función deben ser enlazados con la opción -lcrypt.

CONFORME A

       SVID, X/OPEN, BSD 4.3, POSIX 1003.1-2001

VÉASE TAMBIÉN

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