Man page - encrypt(3)

Packages contains this manual

Available languages:

en fr pl tr ja ro

Manual

encrypt

NAZWA
BIBLIOTEKA
SKŁADNIA
OPIS
WARTOŚĆ ZWRACANA
BŁĘDY
ATRYBUTY
STANDARDY
HISTORIA
Dostępność w glibc
Funkcjonalność w glibc
PRZYKŁADY
ZOBACZ TAKŻE
TŁUMACZENIE

NAZWA

encrypt, setkey, encrypt_r, setkey_r - szyfruje komunikaty 64-bitowe

BIBLIOTEKA

Biblioteka szyfrowania haseł ( libc , -lc )

SKŁADNIA

#define _XOPEN_SOURCE /* Patrz feature_test_macros(7) */
#include <unistd.h>

[[przestarzałe]] void encrypt(char block [64], int edflag );

#define _XOPEN_SOURCE /* Patrz feature_test_macros(7) */
#include <stdlib.h>

[[przestarzałe]] void setkey(const char * key );

#define _GNU_SOURCE /* Patrz feature_test_macros(7) */
#include <crypt.h>

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

OPIS

Funkcje te szyfrują i rozszyfrowują 64-bitowe komunikaty. Funkcja setkey () ustawia klucz używany przez encrypt (). Używany tu argument key jest tablicą 64 bajtów, z których każdy ma wartość numeryczną 1 lub 0. Bajty key[n], gdzie n=8*i-1, są ignorowane tak, że efektywna długość klucza to 56 bitów.

Funkcja encrypt () modyfikuje przekazany bufor, szyfrując go jeśli edflag wynosi 0 i rozszyfrowując, jeśli wynosi 1. Podobnie jak przy argumencie key również block jest reprezentacją wektora bitów rzeczywistej wartości, która jest szyfrowana. Wynik jest zwracany w tym samym wektorze.

Te dwie funkcje nie są wielobieżne tj. dane klucza są przechowywane statycznie. Wariantami wielobieżnymi są funkcje setkey_r () i encrypt_r (). Używają one następującej struktury do przechowywania danych klucza:

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

Przed wywołaniem setkey_r () należy ustawić data->initialized na zero.

WARTOŚĆ ZWRACANA

Funkcje te nie zwracają żadnej wartości.

BŁĘDY

Należy ustawić errno na zero przed wywołaniem powyższych funkcji. W razie powodzenia, errno nie jest zmieniane.

ENOSYS

Funkcja nie jest dostępna (np. ze względu na dawne ograniczenia eksportowe Stanów Zjednoczonych).

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes (7).

Image grohtml-3992511-1.png

STANDARDY

encrypt ()
setkey
()

POSIX.1-2008.

encrypt_r ()
setkey_r
()

Brak.

HISTORIA

Usunięte w glibc 2.28.

Ze względu na korzystanie z szyfru blokowego DES, który nie jest już uważany za bezpieczny, funkcje te usunięto z glibc. Aplikacje powinny obecnie korzystać ze współczesnej biblioteki kryptograficznej, takiej jak libgcrypt .
encrypt
()
setkey
()

POSIX.1-2001, SUS, SVr4.

Dostępność w glibc

Zobacz crypt (3).

Funkcjonalność w glibc

W glibc 2.2, funkcje te korzystają z algorytmu DES.

PRZYKŁADY

#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("Przed szyfrowaniem: %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("Po szyfrowaniu: %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("Po odszyfrowaniu: %s\n", txt);
exit(EXIT_SUCCESS);
}

ZOBACZ TAKŻE

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

TŁUMACZENIE

Tłumaczenie niniejszej strony podręcznika: Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net .