.\" -*- 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 .