encrypt(3) Library Functions Manual encrypt(3) NUME encrypt, setkey, encrypt_r, setkey_r - cripteaza mesaje pe 64 de bii BIBLIOTECA Biblioteca de criptare a parolelor (libcrypt, -lcrypt) SINOPSIS #define _XOPEN_SOURCE /* Consultai feature_test_macros(7) */ #include [[depreciat]] void encrypt(char block[64], int edflag); #define _XOPEN_SOURCE /* Consultai feature_test_macros(7) */ #include [[depreciat]] void setkey(const char *key); #define _GNU_SOURCE /* Consultai feature_test_macros(7) */ #include [[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 funcii cripteaza i decripteaza mesaje pe 64 de bii. Funcia setkey() stabilete cheia utilizata de encrypt(). Argumentul key utilizat aici este o matrice de 64 de octei, fiecare dintre acetia avand valoarea numerica 1 sau 0. Octeii key[n] unde n=8*i-1 sunt ignorai, astfel incat lungimea efectiva a cheii este de 56 de bii. Funcia encrypt() modifica memoria tampon transmisa, codificand daca edflag este 0 i decodificand daca este transmis 1. Ca i argumentul key, de asemenea block este o reprezentare vectoriala de bii a valorii reale care este codificata. Rezultatul este returnat in acelai vector. Aceste doua funcii nu sunt reentrante, adica datele cheie sunt pastrate in memoria statica. Funciile setkey_r() i encrypt_r() sunt versiunile reentrante. Acestea utilizeaza urmatoarea structura pentru a pastra 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; }; Inainte de a apela setkey_r() stabilete data->initialized la zero. VALOAREA RETURNATA Aceste funcii nu returneaza nicio valoare. ERORI-IEIRE Stabilete errno la zero inainte de a apela funciile de mai sus. In caz de succes, errno ramane neschimbata. ENOSYS Funcia nu este furnizata; (de exemplu, din cauza fostelor restricii de export din SUA). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +-------------------------+---------------------+----------------------+ |Interfaa | Atribut | Valoare | +-------------------------+---------------------+----------------------+ |encrypt(), setkey() | Sigurana firelor | MT-Unsafe race:crypt | +-------------------------+---------------------+----------------------+ |encrypt_r(), setkey_r() | Sigurana firelor | MT-Safe | +-------------------------+---------------------+----------------------+ STANDARDE encrypt() setkey() POSIX.1-2008. encrypt_r() setkey_r() Niciunul. ISTORIC Eliminata in glibc 2.28. Deoarece acestea utilizeaza cifrul bloc DES, care nu mai este considerat sigur, aceste funcii au fost eliminate. Aplicaiile ar trebui sa treaca la o biblioteca de criptografie moderna, cum ar fi libgcrypt. encrypt() setkey() POSIX.1-2001, SUS, SVr4. Disponibilitate in glibc Consultai crypt(3). Caracteristici in glibc In glibc 2.2, aceste funcii utilizeaza algoritmul DES. EXEMPLE #define _XOPEN_SOURCE #include #include #include #include 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("Inainte 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("Dupa 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("Dupa decriptare: %s\n", txt); exit(EXIT_SUCCESS); } CONSULTAI I cbc_crypt(3), crypt(3), ecb_crypt(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.8 2 mai 2024 encrypt(3)