Man page - setkey(3)

Packages contains this manual

Available languages:

en fr pl tr ja ro

Manual

encrypt

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
ATRIBUTE
STANDARDE
ISTORIC
Disponibilitate în glibc
Caracteristici în glibc
EXEMPLE
CONSULTAȚI ȘI
TRADUCERE

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

Image grohtml-661769-1.png

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 .