crypt

CRYPT(3)                 Manual del Programador Linux                 CRYPT(3)



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 el 7º bit más bajo 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)



Linux                          23 diciembre 2001                      CRYPT(3)