table of contents
ENCRYPT(3) | Manuel du programmeur Linux | ENCRYPT(3) |
NOM¶
encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits
SYNOPSIS¶
#define _XOPEN_SOURCE /* Consultez feature_test_macros(7)
*/
#include <unistd.h>
void encrypt(char block[64], int edflag);
#define _XOPEN_SOURCE /* Consultez feature_test_macros(7)
*/
#include <stdlib.h>
void setkey(const char *key);
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <crypt.h>
void setkey_r(const char *key, struct crypt_data
*data);
void encrypt_r(char *block, int edflag, struct
crypt_data *data);
Effectuez l'édition des liens avec l'option -lcrypt.
DESCRIPTION¶
Ces fonctions chiffrent et déchiffrent des messages de 64 bits. La fonction setkey() permet de fournir la clef à utiliser pour encrypt(). L'argument key est une table de 64 octets, chacun ayant la valeur 0 ou 1. L'octet key[n] où n=8*i-1 est ignoré, ce qui ramène la clef à 56 bits effectifs.
La fonction encrypt() modifie le tampon transmis, en l'encodant si l'argument edflag vaut 0, et en le décodant s'il vaut 1. L'argument block est, comme l'argument key, une représentation de la valeur à encoder sous forme de vecteur de bits. Le résultat est renvoyé dans le même vecteur.
Ces fonctions ne sont pas réentrantes, c'est-à-dire
que la clef est stockée dans une zone de stockage statique. Les
fonctions setkey_r() et encrypt_r() sont des versions
réentrantes. Elles utilisent la structure suivante pour contenir la
clef :
struct crypt_data {
char keysched[16 * 8];
char sb0[32768];
char sb1[32768];
char sb2[32768];
char sb3[32768];
char crypt_3_buf[14];
char current_salt[2];
long int current_saltbits;
int direction;
int initialized; };
Avant d'appeler setkey_r(), définissez data->initialized à zéro.
VALEUR RENVOYÉE¶
Ces routines ne renvoient pas de valeur.
ERREURS¶
Définissez errno à zéro avant d'appeler les fonctions ci-dessus. Si elles réussissent, errno n'est pas modifiée.
- ENOSYS
- La fonction n'est pas disponible. (Par exemple à cause des restrictions américaines sur l'exportation de routines cryptographiques...)
ATTRIBUTS¶
Multithreading (voir pthreads(7))¶
Les fonctions encrypt() et setkey() ne sont pas sûres dans un contexte multithread.
Les fonctions encrypt_r() et setkey_r() sont sûres dans un contexte multithread.
CONFORMITɶ
Les fonctions encrypt() et setkey() sont conformes à SVr4, SUSv2, et POSIX.1-2001. Les fonctions encrypt_r() et setkey_r() sont des extensions GNU.
NOTES¶
Dans la glibc 2.2, ces fonctions utilisent l'algorithme DES.
EXEMPLE¶
Il faut lier cet exemple avec la bibliothèque libcrypt pour le compiler avec la glibc. Pour servir à quelque chose, les tables key[] et txt[] devraient être initialisées avec des valeurs significatives.
#define _XOPEN_SOURCE #include <unistd.h> #include <stdlib.h> int main(void) {
char key[64]; /* bit pattern for key */
char txt[64]; /* bit pattern for messages */
setkey(key);
encrypt(txt, 0); /* encode */
encrypt(txt, 1); /* decode */ }
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 3.52 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¶
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/>.
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).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
21 juin 2013 |