dwww Home | Manual pages | Find package

encrypt(3)                 Library Functions Manual                 encrypt(3)

NOM
       encrypt, setkey, encrypt_r, setkey_r - Crypter des messages de 64 bits

BIBLIOTHÈQUE
       Bibliothèque de chiffrement et de déchiffrement (libcrypto, -lcrypto)

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

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

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

       [[obsolète]] void setkey(const char *key);

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

       [[obsolète]] void setkey_r(const char *key, struct crypt_data *data);
       [[obsolète]] void encrypt_r(char *block, int edflag,
                                     struct crypt_data *data);

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 à en-
       coder sous forme de vecteur de bits. Le résultat est  renvoyé  dans  le
       même vecteur.

       Ces  deux  fonctions  ne sont pas réentrantes, c'est-à-dire que la clef
       est stockée dans une zone de  stockage  statique.  Les  fonctions  set-
       key_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 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 res-
              trictions américaines sur l'exportation de  routines  cryptogra-
              phiques...)

VERSIONS
       Parce  qu'elles  emploient  le chiffrement par bloc DES, qui n'est plus
       considéré comme sûr, les routines encrypt(), encrypt_r(),  setkey()  et
       setkey_r()  ont  été  retirées dans la glibc 2.28. Les applications de-
       vraient passer à une bibliothèque  de  chiffrement  moderne  telle  que
       libgcrypt.

ATTRIBUTS
       Pour  une explication des termes utilisés dans cette section, consulter
       attributes(7).

       ┌────────────────────────┬──────────────────────┬──────────────────────┐
       │InterfaceAttributValeur               │
       ├────────────────────────┼──────────────────────┼──────────────────────┤
       │encrypt(), setkey()     │ Sécurité des threads │ MT-Unsafe race:crypt │
       ├────────────────────────┼──────────────────────┼──────────────────────┤
       │encrypt_r(), setkey_r() │ Sécurité des threads │ MT-Safe              │
       └────────────────────────┴──────────────────────┴──────────────────────┘

STANDARDS
       encrypt(), setkey(): POSIX.1-2001, POSIX.1-2008, SUS, SVr4.

       Les fonctions encrypt_r() et setkey_r() sont des extensions GNU.

NOTES
   Disponibilité dans la glibc
       Consultez crypt(3).

   Fonctionnalités dans la glibc
       Dans la glibc 2.2, ces fonctions utilisent l'algorithme DES.

EXEMPLES
       #define _XOPEN_SOURCE
       #include <crypt.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       int
       main(void)
       {
           char key[64];
           char orig[9] = "eggplant";
           char buf[64];
           char txt[9];

           for (size_t i = 0; i < 64; i++) {
               key[i] = rand() & 1;
           }

           for (size_t i = 0; i < 8; i++) {
               for (size_t j = 0; j < 8; j++) {
                   buf[i * 8 + j] = orig[i] >> j & 1;
               }
               setkey(key);
           }
           printf("Avant chiffrement : %s\n", orig);

           encrypt(buf, 0);
           for (size_t i = 0; i < 8; i++) {
               for (size_t j = 0, txt[i] = '\0'; j < 8; j++) {
                   txt[i] |= buf[i * 8 + j] << j;
               }
               txt[8] = '\0';
           }
           printf("Après chiffrement :  %s\n", txt);

           encrypt(buf, 1);
           for (size_t i = 0; i < 8; i++) {
               for (size_t j = 0, txt[i] = '\0'; j < 8; j++) {
                   txt[i] |= buf[i * 8 + j] << j;
               }
               txt[8] = '\0';
           }
           printf("Après déchiffrement :  %s\n", txt);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI
       cbc_crypt(3), crypt(3), ecb_crypt(3)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Gué-
       rard <fevrier@tigreraye.org>, Jean-Luc  Coulon  (f5ibh)  <jean-luc.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la        GNU        General       Public       License       version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant  les  conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   5 février 2023                      encrypt(3)

Generated by dwww version 1.15 on Sat Jun 29 01:41:39 CEST 2024.