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

NUME

       encrypt, setkey, encrypt_r, setkey_r - criptează mesaje pe 64 de biți

BIBLIOTECA

       Biblioteca de criptare a parolelor (libcrypt, -lcrypt)

SINOPSIS

       #define _XOPEN_SOURCE       /* Consultați feature_test_macros(7) */
       #include <unistd.h>

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

       #define _XOPEN_SOURCE       /* Consultați feature_test_macros(7) */
       #include <stdlib.h>

       [[depreciat]] void setkey(const char *key);

       #define _GNU_SOURCE         /* Consultați feature_test_macros(7) */
       #include <crypt.h>

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

DESCRIERE

       Aceste  funcții  criptează  și  decriptează  mesaje  pe  64  de  biți.  Funcția setkey() stabilește cheia
       utilizată de encrypt().  Argumentul key utilizat aici este o matrice de  64  de  octeți,  fiecare  dintre
       aceștia având valoarea numerică 1 sau 0. Octeții key[n] unde n=8*i-1 sunt ignorați, astfel încât lungimea
       efectivă a cheii este de 56 de biți.

       Funcția  encrypt()  modifică memoria tampon transmisă, codificând dacă edflag este 0 și decodificând dacă
       este transmis 1. Ca și argumentul key, de asemenea block este o reprezentare vectorială de biți a valorii
       reale care este codificată. Rezultatul este returnat în același vector.

       Aceste două funcții nu sunt reentrante, adică datele cheie sunt păstrate în  memoria  statică.  Funcțiile
       setkey_r()  și  encrypt_r()  sunt versiunile reentrante. Acestea utilizează următoarea structură pentru a
       păstra datele cheii:

           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;
           };

       Înainte de a apela setkey_r() stabilește data->initialized la zero.

VALOAREA RETURNATĂ

       Aceste funcții nu returnează nicio valoare.

ERORI-IEȘIRE

       Stabilește errno la zero înainte de a apela funcțiile  de  mai  sus.  În  caz  de  succes,  errno  rămâne
       neschimbată.

       ENOSYS Funcția nu este furnizată; (de exemplu, din cauza fostelor restricții de export din SUA).

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌────────────────────────────────────────────────────────────┬───────────────────┬──────────────────────┐
       │ InterfațăAtributValoare              │
       ├────────────────────────────────────────────────────────────┼───────────────────┼──────────────────────┤
       │ encrypt(), setkey()                                        │ Siguranța firelor │ MT-Unsafe race:crypt │
       ├────────────────────────────────────────────────────────────┼───────────────────┼──────────────────────┤
       │ encrypt_r(), setkey_r()                                    │ Siguranța firelor │ MT-Safe              │
       └────────────────────────────────────────────────────────────┴───────────────────┴──────────────────────┘

STANDARDE

       encrypt()
       setkey()
              POSIX.1-2008.

       encrypt_r()
       setkey_r()
              Niciunul.

ISTORIC

       Eliminată în glibc 2.28.

       Deoarece  acestea  utilizează  cifrul bloc DES, care nu mai este considerat sigur, aceste funcții au fost
       eliminate. Aplicațiile ar trebui să treacă la o bibliotecă de criptografie modernă, cum ar fi libgcrypt.

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

   Disponibilitate în glibc
       Consultați crypt(3).

   Caracteristici în glibc
       În glibc 2.2, aceste funcții utilizează algoritmul DES.

EXEMPLE

       #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("Înainte de criptare: %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("După criptare:  %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("După decriptare:  %s\n", txt);
           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       cbc_crypt(3), crypt(3), ecb_crypt(3)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                       encrypt(3)