.\" Michael Haardt (michael@cantor.informatik.rwth.aachen.de)
.\"     Sat Sep  3 22:00:30 MET DST 1994
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" Sun Feb 19 21:32:25 1995, faith@cs.unc.edu edited details away
.\"
.\" TO DO: This manual page should go more into detail how DES is perturbed,
.\" which string will be encrypted, and what determines the repetition factor.
.\" Is a simple repetition using ECB used, or something more advanced?  I hope
.\" the presented explanations are at least better than nothing, but by no
.\" means enough.
.\"
.\" added _XOPEN_SOURCE, aeb, 970705
.\" added GNU MD5 stuff, aeb, 011223
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1994 Michael Haardt (GPL-2+)
.\" Copyright © of Polish translation:
.\" Adam Byrtek (PTM) <abyrtek@priv.onet.pl>, 1998.
.\" Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, 2001.
.\" Robert Luberda <robert@debian.org>, 2013.
.\" Michał Kułach <michal.kulach@gmail.com>, 2014.
.TH CRYPT 3 2014\-02\-26 "" "Podręcznik programisty Linuksa"
.SH NAZWA
crypt, crypt_r \- szyfrowanie danych i haseł
.SH SKŁADNIA
.nf
\fB#define _XOPEN_SOURCE\fP       /* Patrz feature_test_macros(7) */
.br
\fB#include <unistd.h>\fP
.sp
\fBchar *crypt(const char *\fP\fIkey\fP\fB, const char *\fP\fIsalt\fP\fB);\fP
.sp
\fB#define _GNU_SOURCE\fP         /* Patrz feature_test_macros(7) */
.br
\fB#include <crypt.h>\fP
.sp
\fBchar *crypt_r(const char *\fP\fIkey\fP\fB, const char *\fP\fIsalt\fP\fB,\fP
\fB              struct crypt_data *\fP\fIdata\fP\fB);\fP
.fi
.sp
Proszę linkować z \fI\-lcrypt\fP.
.SH OPIS
\fBcrypt\fP to funkcja szyfrująca hasła. Opiera się ona na algorytmie Data
Encryption Standard, z pewnymi modyfikacjami mającymi (między innymi)
zapobiec próbom sprzętowego złamania klucza.
.PP
Argument \fIkey\fP to hasło wpisane przez użytkownika.
.PP
Argument \fIsalt\fP to łańcuch dwóch znaków z zestawu [\fBa\-zA\-Z0\-9./\fP]. Ten
łańcuch umożliwia kodowanie jednego hasła na 4096 różnych sposobów.
.PP
Poprzez pobranie 7 najmniej znaczących bitów pierwszych ośmiu znaków
łańcucha \fIkey\fP tworzony jest 56\-bitowy klucz. Ten klucz jest używany do
zakodowania z góry ustalonego łańucha znaków (zwykle jest to łańcuch
składający się z samych zer). Zwracana wartość wskazuje na zaszyfrowane
hasło, serię 13 znaków ASCII (pierwsze dwa znaki reprezentują argument
salt). Zwracana wartość wskazuje na statyczną daną, która jest nadpisywana
przy każdym wywołaniu funkcji.
.PP
Uwaga: Istnieje
.if  t 2\s-2\u56\s0\d
.if  n 2**56
czyli 7.2e16, możliwych wartości. Możliwe jest przeszukiwanie przestrzeni
kluczy z użyciem komputerów z przetwarzaniem równoległym. Dostępne są
programy, takie jak \fBcrack\fP(1), przeszukujące obszar kluczy, które są
często wykorzystywane przez ludzi jako hasła. Tak więc hasło nie powinno
zawierać powszechnych wyrazów i nazw. Zalecane jest używanie programu
\fBpasswd\fP(1), który podczas zmiany lub wyboru hasła sprawdza, czy nie jest
łatwe do złamania.
.PP
Sam algorytm DES ma kilka wad, dlatego \fBcrypt\fP() jest złym rozwiązaniem dla
zastosowań innych niż autoryzacja za pomocą hasła. Jeśli planujesz
wykorzystać \fBcrypt\fP() dla celów kryptograficznych, nie rób tego. Zdobądź
dobrą książkę o szyfrowaniu i jedną z ogólnodostępnych bibliotek DES.

\fBcrypt_r\fP() jest wielodostępową wersją \fBcrypt\fP(). Struktura wskazywana
przez \fIdata\fP jest używana do przechowywania wyniku i różnych wewnętrznych
informacji. Oprócz przydzielenia pamięci dla tej struktury, funkcja
wywołująca funkcję \fBcrypt_r\fP() powinna przed jej pierwszym wywołanie
ustawić \fIdata\->initialized\fP na zero.
.SH "WARTOŚĆ ZWRACANA"
W razie powodzenia zwracany jest wskaźnik do zaszyfrowanego hasła. W
przypadku wystąpienia błędu, zwracana jest wartość NULL.
.SH BŁĘDY
.TP 
\fBEINVAL\fP
\fIsalt\fP ma nieprawidłowy format.
.TP 
\fB
.TP 
\fBENOSYS\fP
.\" This level of detail is not necessary in this man page. . .
.\" .PP
.\" When encrypting a plain text P using DES with the key K results in the
.\" encrypted text C, then the complementary plain text P' being encrypted
.\" using the complementary key K' will result in the complementary encrypted
.\" text C'.
.\" .PP
.\" Weak keys are keys which stay invariant under the DES key transformation.
.\" The four known weak keys 0101010101010101, fefefefefefefefe,
.\" 1f1f1f1f0e0e0e0e and e0e0e0e0f1f1f1f1 must be avoided.
.\" .PP
.\" There are six known half weak key pairs, which keys lead to the same
.\" encrypted data.  Keys which are part of such key clusters should be
.\" avoided.
.\" Sorry, I could not find out what they are.
.\""
.\" .PP
.\" Heavily redundant data causes trouble with DES encryption, when used in the
.\" .I codebook
.\" mode that
.\" .BR crypt ()
.\" implements.  The
.\" .BR crypt ()
.\" interface should be used only for its intended purpose of password
.\" verification, and should not be used as part of a data encryption tool.
.\" .PP
.\" The first and last three output bits of the fourth S-box can be
.\" represented as function of their input bits.  Empiric studies have
.\" shown that S-boxes partially compute the same output for similar input.
.\" It is suspected that this may contain a back door which could allow the
.\" NSA to decrypt DES encrypted data.
.\" .PP
.\" Making encrypted data computed using crypt() publicly available has
.\" to be considered insecure for the given reasons.
Funkcja \fBcrypt\fP() nie została zaimplementowana, prawdopodobnie ze względu
na ograniczenia eksportowe Stanów Zjednoczonych.
.TP 
\fBEPERM\fP
\fI/proc/sys/crypto/fips_enabled\fP ma niezerową wartość i próbowano użyć
słabego typu szyfrowania, takiego jak DES.
.SH ATRYBUTY
.SS "Wielowątkowość (patrz pthreads(7))"
Funkcja \fBcrypt\fP() nie jest bezpieczna dla wątków.
.LP
Funkcja \fBcrypt_r\fP() jest bezpieczna dla wątków.
.SH "ZGODNE Z"
\fBcrypt\fP(): SVr4, 4.3BSD, POSIX.1\-2001. \fBcrypt_r\fP() jest rozszerzeniem GNU.
.SH UWAGI
.SS "Uwagi dotyczące biblioteki glibc"
Wersja glibc2 tej funkcji obsługuje dodatkowe algorytmy szyfrowania.

Jeśli \fIsalt\fP jest łańcuchem znaków zaczynającym się od "$\fIid\fP$", po którym
następuje kolejny łańcuch znaków kończący się na "$", to:
.RS

$\fIid\fP$\fIsalt\fP$\fIencrypted\fP

.RE
to zamiast używać DES, \fIid\fP określa używaną metodę kodowania, co wskazuje
na sposób interpretacji pozostałej części zakodowanego hasła. Obsługiwane są
następujące wartości \fIid\fP:
.RS
.TS
l l.
ID  | Metoda
_
1   | MD5
2a  | Blowfish (nie w głównym glibc; dodane
    | w kilku dystrybucjach Linuksa)
.\" openSUSE has Blowfish, but AFAICS, this option is not supported
.\" natively by glibc -- mtk, Jul 08
.\"
.\" md5 | Sun MD5
.\" glibc doesn't appear to natively support Sun MD5; I don't know
.\" if any distros add the support.
5   | SHA\-256 (od glibc 2.7)
6   | SHA\-512 (od glibc 2.7)
.TE
.RE

Tak więc $5$\fIsalt\fP$\fIencrypted\fP jest hasłem zakodowanym w SHA\-256, a
$6$\fIsalt\fP$\fIencrypted\fP jest zakodowane w SHA\-512

"\fIsalt\fP" oznacza do 16 znaków następujących po "$\fIid\fP$ w haśle. Zakodowana
część łańcucha znaków hasła jest właściwym wyliczonym hasłem. Rozmiar tego
łańcucha znaków jest stały:
.TS
l l.
MD5     | 22 znaki
SHA\-256 | 43 znaki
SHA\-512 | 86 znaków
.TE

Znaki w "\fIsalt\fP" i "\fIencrypted\fP" są losowane ze zbioru [\fBa\-zA\-Z0\-9./\fP]. W
implementacjach MD5 i SHA cały \fIkey\fP ma znaczenie (zamiast tylko pierwszych
ośmiu znaków, jak to jest w przypadku DES).
.SH "ZOBACZ TAKŻE"
\fBlogin\fP(1), \fBpasswd\fP(1), \fBencrypt\fP(3), \fBgetpass\fP(3), \fBpasswd\fP(5)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux
\fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów, oraz
najnowszą wersję oryginału można znaleźć pod adresem
\%http://www.kernel.org/doc/man\-pages/.
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są:
Adam Byrtek (PTM) <abyrtek@priv.onet.pl>,
Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>.
.PP
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 3.71 \fPoryginału.
