Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque hachage de mot de passe (libcrypt, -lcrypt)

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

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

       encrypt_r()
       setkey_r()
              Aucune.

HISTORIQUE

       Supprimée dans la glibc 2.28.

       Parce  qu'elles  emploient le chiffrement par bloc DES, qui n'est plus considéré comme sûr, ces fonctions
       ont été retirées de la glibc. Les applications devraient passer à une bibliothèque de chiffrement moderne
       telle que libgcrypt.

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

   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 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.9.1                    15 juin 2024                                        encrypt(3)