Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

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

SYNOPSIS

       #define _XOPEN_SOURCE       /* Consultez feature_test_macros(7) */
       #include <unistd.h>

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

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <crypt.h>

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

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

DESCRIPTION

       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 [a-zA-Z0-9./]. 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

       EINVAL Le format de salt est incorrect.

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

       EPERM  /proc/sys/crypto/fips_enabled  est  différent  de  0,  et  un  chiffrement  faible  comme  DES est
              sélectionné.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       La fonction crypt() n'est pas sûre dans un contexte multithread.

       La fonction crypt_r() est sûre dans un contexte multithread.

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  [a-zA-Z0-9./].  Dans  les
       implémentations MD5 et SHA, key est utilisé entièrement (au lieu de seulement les 8 premiers octets  dans
       l'implémentation DES).

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 3.65 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/. Christophe Blaess  <http://www.blaess.fr/christophe/>  (1996-2003),
       Alain  Portal  <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe francophone de
       traduction de Debian (2006-2009).

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       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> ».

                                                 26 février 2014                                        CRYPT(3)