CRYPT(3)

NOM
crypt - Crytage de donnees ou de mot-de-passe.

SYNOPSIS
#define _XOPEN_SOURCE_
#include <unistd.h>

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

DESCRIPTION
La fonction crypt est celle utilisee pour le cryptage des mots-de-passe. Elle est basee sur l'algorithme DES (Data Encryption Standard) avec des variantes prevues entre autres choses pour eviter l'implementation materielle d'un casseur de code.

L'argument cle est le mot-de-passe saisi par l'utilisateur.

salt est une chaine de deux caracteres pris dans l'ensemble [a–zA–Z0–9./]. Cette chaine est utilisee pour introduire une perturbation (parmi 4096) dans l'algorithme.

En utilisant les 7 bits de poids faibles de chaque caracteres de la cle, une cle de 56-bits est obtenue, qui est alors utilisee pour cryptee de maniere repetee une chaine de caracteres constante (souvent une chaine de zeros). La valeur renvoyee pointe sur le mot de passe crypte, une chaine de 13 caracteres ASCII imprimables, les deux premiers caracteres representant l'argument salt lui-meme. Cette valeur renvoyee pointe sur des donnees statiques dont le contenu est ecrase a chaque appel.

Attention : L'espace des cles consistent en 2^56, soit 7,2.10^16 valeurs possibles. Une recherche exhaustive est possible en utilisant des ordinateurs massivement paralleles. Certains logiciels sont disponibles, comme crack(1), qui exploreront la portion de l'espace des cles contenant les mots de passe habituellement utilises par les humains. Ainsi, le choix d'un mot de passe doit au minimum eviter les noms propres ou communs. On recommande fortement l'utilisation d'un programme comme passwd(1) pour verifier la fiabilite des mots de passe des la saisie.

L'algorithme DES lui-meme a quelques inconvenients qui rendent l'utilisation de crypt(3) peu recommandable pour autre chose que le cryptage de mots de passe. Si vous comptez developper un projet cryptographique en utilisant crypt(3), abandonnez cette idee : achetez un bon bouquin sur la cryptographie, et utilisez une bibliotheque DES toute faite comme il en existe tant.

CONFORME A
SVID, X/OPEN, BSD 4.3

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