CRYPT

Section: Fonctions de bibliothèque (3)
Updated: 23 décembre 2001
Index Return to Main Contents
 

NOM

crypt - Cryptage de données ou de mot de passe  

SYNOPSIS

#define _XOPEN_SOURCE
#include <unistd.h>

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

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 crypté, 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(3) peu recommandable pour autre chose que le cryptage de mots de passe. Si vous comptez développer un projet cryptographique en utilisant crypt(3), abandonnez cette idée : achetez un bon bouquin sur la cryptographie, et utilisez une bibliothèque DES toute faite.  

VALEUR RENVOYÉE

Un pointeur vers le mot de passe crypté. En cas d'erreur, NULL est renvoyé.  

ERREURS

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

EXTENSION GNU

La version de cette fonction présente dans la glibc2 possède quelques fonctionnalités supplémentaires : si salt est une chaîne de caractères commençant par les trois caractères « $1$ » suivis d'au plus huit caractères, et éventuellement terminée par « $ », alors, au lieu d'utiliser la machine DES, la fonction crypt() de la glibc emploie un algorithme basé sur MD5 et produit jusqu'à 34 octets, plus précisément « $1$<salt>$<encoded> », où « <salt> » correspond aux 8 premiers caractères suivant le « $1$ » dans salt, et « $<encoded> » aux 22 caractères suivants. Les caractères contenus dans « <salt> » et « <lt>encoded> » sont générés depuis l'ensemble [a-zA-Z0-9./]. La clé key entière est significative ici, et non pas ses huit premiers octets.

Pour les programmes utilisant cette fonction, il faut employer l'option -lcrypt lors de l'édition des liens.  

CONFORMITÉ À

SVr4, BSD 4.3, POSIX.1-2001  

VOIR AUSSI

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

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


 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
EXTENSION GNU
CONFORMITÉ À
VOIR AUSSI
TRADUCTION

This document was created by man2html, using the manual pages.
Time: 22:16:06 GMT, February 02, 2008