.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2000 Nicolás Lichtmaier <nick@debian.org> .\" 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 .\" <walter.harms@informatik.uni-oldenburg.de> .\" .\" Modified 2003-04-04, aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH encrypt 3 "5 lutego 2023 r." "Linux man\-pages 6.03" .SH NAZWA encrypt, setkey, encrypt_r, setkey_r \- szyfruje komunikaty 64\-bitowe .SH BIBLIOTEKA Biblioteka szyfrowania i odszyfrowywania (\fIlibcrypto\fP, \fI\-lcrypto\fP) .SH SKŁADNIA .nf \fB#define _XOPEN_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include <unistd.h>\fP .PP \fB[[przestarzałe]] void encrypt(char \fP\fIblock\fP\fB[64], int \fP\fIedflag\fP\fB);\fP .PP \fB#define _XOPEN_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include <stdlib.h>\fP .PP \fB[[przestarzałe]] void setkey(const char *\fP\fIkey\fP\fB);\fP .PP \fB#define _GNU_SOURCE\fP /* Patrz feature_test_macros(7) */ \fB#include <crypt.h>\fP .PP \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. .PP 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. .PP 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: .PP .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 .PP 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 WERSJE Ze względu na korzystanie z szyfru blokowego DES, który nie jest już uważany za bezpieczny, funkcje \fBencrypt\fP(), \fBencrypt_r\fP(), \fBsetkey\fP() i \fBsetkey_r\fP() usunięto w glibc 2.28. Aplikacje powinny obecnie korzystać ze współczesnej biblioteki kryptograficznej, takiej jak \fBlibgcrypt\fP. .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .ad l .nh .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ \fBencrypt\fP(), \fBsetkey\fP() T} Bezpieczeństwo wątkowe MT\-niebezpieczne race:crypt T{ \fBencrypt_r\fP(), \fBsetkey_r\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .hy .ad .sp 1 .SH STANDARDY \fBencrypt\fP(), \fBsetkey\fP(): POSIX.1\-2001, POSIX.1\-2008, SUS, SVr4. .PP Funkcje \fBencrypt_r\fP() i \fBsetkey_r\fP() są rozszerzeniami GNU. .SH UWAGI .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 .\" [[deprecated]] SRC BEGIN (encrypt.c) .EX #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\en", orig); encrypt(buf, 0); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = \[aq]\e0\[aq]; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = \[aq]\e0\[aq]; } printf("Po szyfrowaniu: %s\en", txt); encrypt(buf, 1); for (size_t i = 0; i < 8; i++) { for (size_t j = 0, txt[i] = \[aq]\e0\[aq]; j < 8; j++) { txt[i] |= buf[i * 8 + j] << j; } txt[8] = \[aq]\e0\[aq]; } printf("Po odszyfrowaniu: %s\en", 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 <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com> . .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 .