Provided by: manpages-fr-dev_4.19.0-7_all bug

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. Les octets key[n] où n=8*i-1 sont ignorés, 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 réelle à encoder 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  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 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.)

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  de  la
       glibc 2.28.  Les  applications  devraient 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  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.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.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.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⟩.