Loading

NOM

       crypt, crypt_r - Chiffrage de données ou de mot de passe

SYNOPSIS

       #define _XOPEN_SOURCE
       #include <unistd.h>

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

       char *crypt_r(const char *key, const char *salt,
                     struct crypt_data *data);

       Effectuez l’édition des liens avec l’option -lcrypt.

       La  fonction  crypt  est  celle  utilisée  pour le cryptage des mots de
       passe.  Elle  est  basée  sur  l’algorithme  DES   (« Data   Encryption
       Standard »)  avec des variantes prévues entre autres choses pour éviter
       l’implémentation matérielle d’un casseur de code.

       L’argument key est le mot de passe saisi par l’utilisateur.

       salt  est  une  chaîne  de  deux  caractères   pris   dans   l’ensemble
       [azAZ09./].   Cette   chaîne   est   utilisée  pour  introduire  une
       perturbation (parmi 4096) dans l’algorithme.

       En  utilisant  les  sept  bits  de  poids  faibles  des  huit  premiers
       caractères  de  key,  une  clé  de  56 bits  est obtenue, qui est alors
       utilisée pour crypter de  manière  répétée  une  chaîne  de  caractères
       constante  (souvent une chaîne de zéros). La valeur renvoyée pointe sur
       le mot de passe chiffré, une chaîne de 13 caractères ASCII imprimables,
       les  deux  premiers  caractères  représentant l’argument salt lui-même.
       Cette valeur renvoyée pointe sur des données statiques dont le  contenu
       est écrasé à chaque appel.

       Attention : L’espace des clés consistent en 2**56 soient 7,2e16 valeurs
       possibles. Une recherche  exhaustive  est  possible  en  utilisant  des
       ordinateurs    massivement    parallèles.   Certains   logiciels   sont
       disponibles, comme crack(1), qui exploreront la portion de l’espace des
       clés  contenant  les  mots  de  passe  habituellement  utilisés par les
       humains. Ainsi, le choix d’un mot de passe doit au minimum  éviter  les
       noms  propres  ou  communs.  On recommande fortement l’utilisation d’un
       programme comme passwd(1) pour vérifier la fiabilité des mots de  passe
       dès la saisie.

       L’algorithme   DES   lui-même  a  quelques  inconvénients  qui  rendent
       l’utilisation de crypt() peu recommandable  pour  autre  chose  que  le
       cryptage  de  mots  de  passe.  Si  vous  comptez  développer un projet
       cryptographique en utilisant crypt(), abandonnez cette  idée :  achetez
       un  bon  bouquin sur la cryptographie, et utilisez une bibliothèque DES
       toute faite.

       crypt_r() est la version ré-entrante de crypt(). La  structure  pointée
       par  data  est  utilisée  pour  sauvegarder  les données et marquer les
       informations. En plus  de  l’allocation,  l’appelant  doit  initialiser
       data->initialized à zéro avant le premier appel à crypt_r().

VALEUR RENVOYÉE

       En cas de succès, un pointeur vers le mot de passe chiffré est renvoyé.
       En cas d’erreur, NULL est renvoyé.

ERREURS

       ENOSYS La fonction crypt() est  absente,  probablement  en  raison  des
              restrictions d’exportation des États-Unis.

CONFORMITÉ

       crypt() :  SVr4, 4.3BSD, POSIX.1-2001. crypt_r() est une extension GNU.

NOTES

   Notes sur la glibc
       La version glibc2 de cette fonction prend en charge des algorithmes  de
       chiffrement supplémentaires.

       Si  salt  est  une  chaîne  de caractères commençant par les caractères
       « $id$ » et suivit par une chaîne se terminant par « $ » :

              $id$salt$encrypted

       alors au lieu d’utiliser la machine  DES,  id  indique  la  méthode  de
       chiffrement  utilisée  et comment le reste de la chaîne de mot de passe
       est interprétée. Les valeur suivantes sont prises en charge pour id :

              ID  | Method
              -----------------------------------------------------------
              1   | MD5
              2a  | Blowfish (pas dans la glibc officielle ; ajoutée
                  | par certaines distributions Linux)
              5   | SHA-256 (depuis la glibc 2.7)
              6   | SHA-512 (depuis la glibc 2.7)

       Ainsi, $5$salt$encrypted  est  un  mot  de  passe  chiffré  SHA-256  et
       $6$salt$encrypted est un mot de passe SHA-512.

       « salt »  comprend  jusqu’à  16  caractères  de  sel après « $id$ ». La
       partie encrypted de la chaîne de mot de  passe  correspond  au  mot  de
       passe chiffré. La taille de cette chaîne est fixe :

       MD5     | 22 caractères
       SHA-256 | 43 caractères
       SHA-512 | 86 caractères

       Les  caractères  de  « salt »  et « encrypted » sont tiré de l’ensemble
       [azAZ09./]. Dans l’implémentation SHA, key est  utilisé  entièrement
       (au lieu de seulement les 8 premiers octets dans l’implémentation MD5).

VOIR AUSSI

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

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».

                                 25 août 2008