encrypt   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (3)
Updated: 4 avril 2003
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#define _XOPEN_SOURCE
#include <unistd.h>

void encrypt(char block[64], int edflag);

#define _XOPEN_SOURCE
#include <stdlib.h>

void setkey(const char *key);

#define _GNU_SOURCE
#include <crypt.h>

void setkey_r(const char *key, struct crypt_data *data);
void encrypt_r(char *block, int edflag, struct crypt_data *data);

Édition des liens avec -lcrypt.  




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Ces fonctions cryptent et décryptent des messages de 64 bits. La fonction setkey() permet de fournir la clef à utiliser pour encrypt(). Le paramètre key est une table d'octets, chacun ayant la valeur 0 ou 1. L'octet key[n] où n=8*q-1 est ignoré, ce qui ramène la clef à 56 bits effectifs.

La fonction encrypt() modifie le tampon transmis, en le cryptant si le paramètre edflag vaut 0, et en le décryptant s'il vaut 1. Le paramètre block est, comme le paramètre 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, initialized;
};

Avant d'appeler setkey_r(), positionnez data->initialized à zéro.  




VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Ces routines ne renvoient pas de valeur.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Mettez errno à zéro avant d'appeler les routines ci-dessus. Si elles réussissent, elle n'est pas modifiée. Sinon, elle peut valoir :
ENOSYS
La fonction n'est pas disponible. (Par exemple à cause des restrictions américaines sur l'exportation de routines cryptographiques...)
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Dans la glibc 2.2, ces fonctions utilisent l'algorithme DES.  



EXEMPLE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Avec la glibc 2.2, il faudra lier cet exemple avec la bibliothèque libcrypt. Pour servir à quelque chose, les tables key[] et txt[] devraient être remplies avec des zones 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
cbc_crypt(3), crypt(3), ecb_crypt(3), feature_test_macros(7)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 29 août 2000 et révisée le 8 janvier 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 encrypt ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
EXEMPLE
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
ENOSYSERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:52:09, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional