Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
crypt, crypt_r - Chiffrage de donnees 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'edition des liens avec l'option -lcrypt.
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 key 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 sept bits de poids faibles des huit premiers
caracteres de key, une cle de 56 bits est obtenue, qui est alors
utilisee pour crypter de maniere repetee une chaine de caracteres
constante (souvent une chaine de zeros). La valeur renvoyee pointe sur
le mot de passe chiffre, 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 soient 7,2e16 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() peu recommandable pour autre chose que le
cryptage de mots de passe. Si vous comptez developper un projet
cryptographique en utilisant crypt(), abandonnez cette idee : achetez
un bon bouquin sur la cryptographie, et utilisez une bibliotheque DES
toute faite.
crypt_r() est la version reentrante de crypt(). La structure pointee
par data est utilisee pour sauvegarder les donnees et marquer les
informations. En plus de l'allocation, l'appelant doit initialiser
data->initialized a zero avant le premier appel a crypt_r().
VALEUR RENVOY'EE
En cas de succes, un pointeur vers le mot de passe chiffre est renvoye.
En cas d'erreur, NULL est renvoye.
ERREURS
ENOSYS La fonction crypt() est absente, probablement en raison des
restrictions d'exportation des Etats-Unis.
CONFORMIT'E
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 supplementaires.
Si salt est une chaine de caracteres commencant par les caracteres
<< $id$ >> et suivit par une chaine se terminant par << $ >> :
$id$salt$encrypted
alors au lieu d'utiliser la machine DES, id indique la methode de
chiffrement utilisee et comment le reste de la chaine de mot de passe
est interpretee. Les valeur suivantes sont prises en charge pour id :
ID | Method
-----------------------------------------------------------
1 | MD5
2a | Blowfish (pas dans la glibc officielle ; ajoutee
| 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 chiffre SHA-256 et
$6$salt$encrypted est un mot de passe SHA-512.
<< salt >> comprend jusqu'a 16 caracteres de sel apres << $id$ >>. La
partie encrypted de la chaine de mot de passe correspond au mot de
passe chiffre. La taille de cette chaine est fixe :
MD5 | 22 caracteres
SHA-256 | 43 caracteres
SHA-512 | 86 caracteres
Les caracteres de << salt >> et << encrypted >> sont tire de l'ensemble
[a-zA-Z0-9./]. Dans les implementations MD5 et SHA, key est utilise
entierement (au lieu de seulement les 8 premiers octets dans
l'implementation DES).
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.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>. Christophe Blaess
<URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal
<URL:http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'equipe francophone de traduction de Debian (2006-2009).
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
20 juin 2010 CRYPT(3)