.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2000 Nicolás Lichtmaier .\" Created 2000-07-22 00:52-0300 .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Modified 2002-07-23 19:21:35 CEST 2002 Walter Harms .\" .\" .\" Modified 2003-04-04, aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH encrypt 3 "15 czerwca 2024 r." "Linux man\-pages 6.9.1" .SH NAZWA encrypt, setkey, encrypt_r, setkey_r \- szyfruje komunikaty 64\-bitowe .SH BIBLIOTEKA Biblioteka szyfrowania haseł (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#define _XOPEN_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include \fP .P \fB[[przestarzałe]] void encrypt(char \fP\fIblock\fP\fB[64], int \fP\fIedflag\fP\fB);\fP .P \fB#define _XOPEN_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include \fP .P \fB[[przestarzałe]] void setkey(const char *\fP\fIkey\fP\fB);\fP .P \fB#define _GNU_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include \fP .P \fB[[przestarzałe]] void setkey_r(const char *\fP\fIkey\fP\fB, struct crypt_data *\fP\fIdata\fP\fB);\fP \fB[[przestarzałe]] void encrypt_r(char *\fP\fIblock\fP\fB, int \fP\fIedflag\fP\fB,\fP \fB struct crypt_data *\fP\fIdata\fP\fB);\fP .fi .SH OPIS Funkcje te szyfrują i rozszyfrowują 64\-bitowe komunikaty. Funkcja \fBsetkey\fP() ustawia klucz używany przez \fBencrypt\fP(). Używany tu argument \fIkey\fP 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. .P Funkcja \fBencrypt\fP() modyfikuje przekazany bufor, szyfrując go jeśli \fIedflag\fP wynosi 0 i rozszyfrowując, jeśli wynosi 1. Podobnie jak przy argumencie \fIkey\fP również \fIblock\fP jest reprezentacją wektora bitów rzeczywistej wartości, która jest szyfrowana. Wynik jest zwracany w tym samym wektorze. .P Te dwie funkcje nie są wielobieżne tj. dane klucza są przechowywane statycznie. Wariantami wielobieżnymi są funkcje \fBsetkey_r\fP() i \fBencrypt_r\fP(). Używają one następującej struktury do przechowywania danych klucza: .P .in +4n .EX 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; }; .EE .in .P Przed wywołaniem \fBsetkey_r\fP() należy ustawić \fIdata\->initialized\fP na zero. .SH "WARTOŚĆ ZWRACANA" Funkcje te nie zwracają żadnej wartości. .SH BŁĘDY Należy ustawić \fIerrno\fP na zero przed wywołaniem powyższych funkcji. W razie powodzenia, \fIerrno\fP nie jest zmieniane. .TP \fBENOSYS\fP Funkcja nie jest dostępna (np. ze względu na dawne ograniczenia eksportowe Stanów Zjednoczonych). .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBencrypt\fP(), \fBsetkey\fP() T} Bezpieczeństwo wątkowe MT\-niebezpieczne race:crypt T{ .na .nh \fBencrypt_r\fP(), \fBsetkey_r\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .SH STANDARDY .TP \fBencrypt\fP() .TQ \fBsetkey\fP() POSIX.1\-2008. .TP \fBencrypt_r\fP() .TQ \fBsetkey_r\fP() Brak. .SH HISTORIA Usunięte w glibc 2.28. .P 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 \fBlibgcrypt\fP. .TP \fBencrypt\fP() .TQ \fBsetkey\fP() POSIX.1\-2001, SUS, SVr4. .SS "Dostępność w glibc" Zobacz \fBcrypt\fP(3). .SS "Funkcjonalność w glibc" W glibc 2.2, funkcje te korzystają z algorytmu DES. .SH PRZYKŁADY .\" SRC BEGIN (encrypt.c) .EX #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("Before encrypting: %s\[rs]n", orig); \& encrypt(buf, 0); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = \[aq]\[rs]0\[aq]; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = \[aq]\[rs]0\[aq]; } printf("After encrypting: %s\[rs]n", txt); \& encrypt(buf, 1); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = \[aq]\[rs]0\[aq]; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = \[aq]\[rs]0\[aq]; } printf("After decrypting: %s\[rs]n", txt); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "ZOBACZ TAKŻE" \fBcbc_crypt\fP(3), \fBcrypt\fP(3), \fBecb_crypt\fP(3) .\" .BR fcrypt (3) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .