<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">.\" -*- coding: UTF-8 -*-
.\" Written and revised by Solar Designer &lt;solar at openwall.com&gt; in 2000-2011.
.\" Revised by Zack Weinberg &lt;zackw at panix.com&gt; in 2017.
.\" Converted to mdoc format by Zack Weinberg in 2018.
.\"
.\" No copyright is claimed, and this man page is hereby placed in the public
.\" domain.  In case this attempt to disclaim copyright and place the man page
.\" in the public domain is deemed null and void, then the man page is
.\" Copyright 2000-2011 Solar Designer, 2017, 2018 Zack Weinberg, and it is
.\" hereby released to the general public under the following terms:
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted.
.\"
.\" There's ABSOLUTELY NO WARRANTY, express or implied.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.Dd 11 paÅºdziernika 2017 r.
.Dt CRYPT 3
.Os "Projekt Openwall"
.Sh NAZWA
.Nm crypt , crypt_r , crypt_rn , crypt_ra
.Nd miesza (haszuje) hasÅ‚a
.Sh BIBLIOTEKA
.Lb libcrypt
.Sh SKÅADNIA
.In crypt.h
.Ft "char *"
.Fo crypt
.Fa "const char *phrase"
.Fa "const char *setting"
.Fc
.Ft "char *"
.Fo crypt_r
.Fa "const char *phrase"
.Fa "const char *setting"
.Fa "struct crypt_data *data"
.Fc
.Ft "char *"
.Fo crypt_rn
.Fa "const char *phrase"
.Fa "const char *setting"
.Fa "struct crypt_data *data"
.Fa "int size"
.Fc
.Ft "char *"
.Fo crypt_ra
.Fa "const char *phrase"
.Fa "const char *setting"
.Fa "void **data"
.Fa "int *size"
.Fc
.Sh OPIS
Funkcje
.Nm crypt ,
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
nieodwracalnie \[Bq]mieszajÄ…\[rq] (haszujÄ…) hasÅ‚a w celu ich przechowywania
w systemowej bazie danych haseÅ‚
.Pq Xr shadow 5 ,
za pomocÄ…
kryptograficznej \[Bq]metody mieszajÄ…cej\[rq]. Wynik operacji zwany jest
\[Bq]skrÃ³tem hasÅ‚a\[rq] lub po prostu \[Bq]skrÃ³tem\[rq]
(\[Bq]haszem\[rq]). Metody mieszania opisano w
.Xr crypt 5 .
.Pp
.Fa setting
kontrolujÄ… metodÄ™ mieszania, ktÃ³ra ma zostaÄ‡ zastosowana i
przekazujÄ… jej rÃ³Å¼ne parametry, w szczegÃ³lnoÅ›ci losowÄ… \[Bq]sÃ³l\[rq], ktÃ³ra
zapewnia, Å¼e Å¼adne dwa przechowywane skrÃ³ty nie sÄ… takie same, nawet przy
takich samych
.Fa phrase .
.Pp
Argument
.Fa data
do
.Nm crypt_r
jest strukturÄ… typu
.Vt "struct crypt_data" .
Ma co najmniej nastÄ™pujÄ…ce pola:
.Bd -literal -offset indent
struct crypt_data {
    char output[CRYPT_OUTPUT_SIZE];
    char setting[CRYPT_OUTPUT_SIZE];
    char input[CRYPT_MAX_PASSPHRASE_SIZE];
    char initialized;
};
.Ed
.Pp
Po pomyÅ›lnym powrocie z
.Nm crypt_r ,
skrÃ³ty haseÅ‚ trafiÄ… do
.Fa output .
Aplikacje sÄ… zachÄ™cane (lecz nie jest to wymagane) do uÅ¼ywania pÃ³l
.Fa input
i
.Fa setting ,
w celu ich przekazania jako
.Fa input phrase
i
.Fa setting
do
.Nm crypt_r .
W ten sposÃ³b Å‚atwiejsze bÄ™dzie
usuniÄ™cie wszystkich wraÅ¼liwych danych, ktÃ³re nie sÄ… juÅ¼ potrzebne.
.Pp
Pole
.Fa initialized
musi wynosiÄ‡ zero przed pierwszym uÅ¼yciu obiektu
.Vt "struct crypt_data"
w wywoÅ‚aniu do
.Fn crypt_r .
Przed pierwszym
uÅ¼yciem, zaleca siÄ™ wyzerowanie caÅ‚ego obiektu, a nie tylko
.Fa initialized
i nie jedynie pÃ³l udokumentowanych (oczywiÅ›cie naleÅ¼y to zrobiÄ‡
przed przechowaniem czegokolwiek w
.Fa setting
i
.Fa input ) .
.Pp
Argument
.Fa data
do
.Nm crypt_rn
powinien rÃ³wnieÅ¼ wskazywaÄ‡ na obiekt
.Vt "struct crypt_data" ,
przy czym
.Fa size
powinno byÄ‡ rozmiarem tego
obiektu, rzutowanym na
.Vt int .
Przy uÅ¼yciu z
.Nm crypt_rn ,
caÅ‚y
obiekt
.Fa data
(poza polami
.Fa input
i
.Fa setting )
musi byÄ‡
wyzerowany przed pierwszym uÅ¼yciem; nie jest to jedynie zalecenie, jak ma to
miejsce w przypadku
.Nm crypt_r .
Poza tym, pola tego obiektu majÄ… te same
zastosowania, co dla
.Nm crypt_r .
.Pp
Przy pierwszym wywoÅ‚aniu do
.Nm crypt_ra ,
.Fa data
powinno byÄ‡ adresem
zmiennej
.Vt "void *"
ustawionej na NULL, a
.Fa size
powinno byÄ‡
adresem zmiennej
.Vt int
ustawionej na zero.
.Nm crypt_ra
zaalokuje i
zainicjuje obiekt
.Vt "struct crypt_data" ,
za pomocÄ…
.Xr malloc 3
i
zapisze jego adres i rozmiar do zmiennych, na ktÃ³re wskazujÄ…
.Fa data
i
.Fa size .
MoÅ¼na ich pÃ³Åºniej uÅ¼yÄ‡ ponownie w kolejnych wywoÅ‚aniach. Po
tym, jak aplikacja ukoÅ„czy mieszanie haseÅ‚, powinna zdealokowaÄ‡ obiekt
.Vt "struct crypt_data"
za pomocÄ…
.Xr free 3 .
.Sh WARTOÅšCI ZWRACANE
Po pomyÅ›lnym zakoÅ„czeniu,
.Nm crypt ,
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
zwracajÄ… wskaÅºnik do Å‚aÅ„cucha kodujÄ…cego zarÃ³wno skrÃ³t hasÅ‚a
jak i ustawienia, ktÃ³rych uÅ¼yto, do jego zakodowania. ÅaÅ„cuch ten moÅ¼e
posÅ‚uÅ¼yÄ‡ jako bezpoÅ›rednie
.Fa setting
w innych wywoÅ‚aniach do
.Nm crypt ,
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra ,
oraz jako
.Fa prefix
w wywoÅ‚aniach do
.Nm crypt_gensalt ,
.Nm crypt_gensalt_rn
i
.Nm crypt_gensalt_ra .
BÄ™dzie to Å‚aÅ„cuch zÅ‚oÅ¼ony wyÅ‚Ä…cznie z drukowalnych
znakÃ³w ASCII i nie bÄ™dzie zawieraÅ‚ biaÅ‚ych znakÃ³w, ani znakÃ³w \[Bq]:\[rq],
\[Bq];\[rq], \[Bq]*\[rq], \[Bq]!\[rq] i \[Bq]\e\[rq]. WiÄ™cej informacji o
formacie skrÃ³tÃ³w haseÅ‚ znajduje siÄ™ w podrÄ™czniku
.Xr crypt 5 .
.Pp
.Nm crypt
umieszcza swÃ³j wynik w statycznej przestrzeni przechowywania,
ktÃ³ra bÄ™dzie nadpisana w kolejnych wywoÅ‚aniach
.Nm crypt .
Nie jest
bezpieczne rÃ³wnoczesne wywoÅ‚ywanie
.Nm crypt
z wielu wÄ…tkÃ³w.
.Pp
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
umieszczajÄ… swoje wyniki w
polu
.Fa output
ich argumentu
.Fa data .
MoÅ¼na bezpiecznie wywoÅ‚ywaÄ‡ je
rÃ³wnoczeÅ›nie z wielu wÄ…tkÃ³w, o ile tylko uÅ¼ywane sÄ… rÃ³Å¼ne obiekty
.Fa data
w kaÅ¼dym wÄ…tku.
.Pp
Po wystÄ…pieniu bÅ‚Ä™du,
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
zapisujÄ…
.Em nieprawidÅ‚owy
skrÃ³t hasÅ‚a w polu
.Fa output
ich argumentu
.Fa data ,
a
.Nm crypt
zapisze nieprawidÅ‚owy skrÃ³t w swojej statycznej
przestrzeni przechowywania. ÅaÅ„cuch ten bÄ™dzie krÃ³tszy niÅ¼ 13 znakÃ³w, bÄ™dzie
rozpoczynaÅ‚ siÄ™ od znaku \[Bq]*\[rq], a przy porÃ³wnaniu nie bÄ™dzie rÃ³wny
.Fa setting .
.Pp
Po wystÄ…pieniu bÅ‚Ä™du,
.Nm crypt_rn
i
.Nm crypt_ra
zwrÃ³cÄ… pusty
wskaÅºnik.
.Nm crypt_r
i
.Nm crypt
rÃ³wnieÅ¼ mogÄ… zwrÃ³ciÄ‡ pusty wskaÅºnik,
mogÄ… teÅ¼ zwrÃ³ciÄ‡ wskaÅºnik do nieprawidÅ‚owego skrÃ³tu, w zaleÅ¼noÅ›ci od
konfiguracji libcrypt (opcja zwrÃ³cenia nieprawidÅ‚owego skrÃ³tu istnieje ze
wzglÄ™du na kompatybilnoÅ›Ä‡ ze starszymi aplikacjami, ktÃ³re zakÅ‚adajÄ…, Å¼e
.Nm crypt
nie moÅ¼e zwrÃ³ciÄ‡ pustego wskaÅºnika; zob.
.Sx UWAGI DOTYCZÄ„CE PRZENOÅšNOÅšCI
niÅ¼ej).
.Pp
Wszystkie cztery funkcje ustawiajÄ…
.Va errno
przy niepowodzeniu.
.Sh BÅÄ˜DY
.Bl -tag -width Er
.It Er EINVAL
.Fa setting
jest nieprawidÅ‚owe lub Å¼Ä…dano nieobsÅ‚ugiwanej metody
mieszania.
.It Er ERANGE
.Fa phrase
jest zbyt dÅ‚ugie (dÅ‚uÅ¼sze niÅ¼
.Dv CRYPT_MAX_PASSPHRASE_SIZE
znakÃ³w; niektÃ³re metody mieszania mogÄ… mieÄ‡ mniejsze limity).
.br
Tylko
.Nm crypt_rn :
.Fa size
jest zbyt maÅ‚e dla metody mieszania
zaÅ¼Ä…danej w
.Fa setting .
.It Er ENOMEM
Nie udaÅ‚o siÄ™ zaalokowaÄ‡ wewnÄ™trznej pamiÄ™ci \[Bq]scratch\[rq].
.br
Tylko
.Nm crypt_ra :
nie udaÅ‚o siÄ™ zaalokowaÄ‡ pamiÄ™ci dla
.Fa data .
.It Er ENOSYS No lub Er EOPNOTSUPP
Mieszanie haseÅ‚ nie jest obsÅ‚ugiwane w tej instalacji lub metoda mieszania
zaÅ¼Ä…dana w
.Fa setting
nie jest obsÅ‚ugiwana. Te statusy bÅ‚Ä™dÃ³w nie sÄ…
uÅ¼ywane w tej wersji libcrypt, ale mogÄ… wystÄ…piÄ‡ na innych systemach.
.El
.Sh UWAGI DOTYCZÄ„CE PRZENOÅšNOÅšCI
.Nm crypt
jest wymienione w POSIX, lecz
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
nie sÄ… czÄ™Å›ciÄ… Å¼adnego standardu.
.Pp
POSIX nie okreÅ›la Å¼adnych metod mieszania, ani nie wymaga, aby skrÃ³ty haseÅ‚
byÅ‚y przenoÅ›ne miÄ™dzy systemami. W praktyce, skrÃ³ty haseÅ‚ sÄ… przenoÅ›ne, o
ile oba systemy obsÅ‚ugujÄ… danÄ… metodÄ™ mieszania. Jednak zestaw obsÅ‚ugiwanych
metod mieszania znacznie rÃ³Å¼ni siÄ™ miÄ™dzy systemami.
.Pp
Zachowanie
.Nm crypt
w przypadku bÅ‚Ä™dÃ³w nie jest dobrze
zestandaryzowane. NiektÃ³re implementacje nie mogÄ… zawieÅ›Ä‡ (poza zaÅ‚amaniem
programu), inne zwracajÄ… pusty wskaÅºnik lub okreÅ›lony Å‚aÅ„cuch. WiÄ™kszoÅ›Ä‡
implementacji nie ustawia
.Va errno ,
lecz niektÃ³re to robiÄ…. POSIX
okreÅ›la zwracanie pustego wskaÅºnika i ustawianie
.Va errno ,
lecz
definiuje tylko jeden moÅ¼liwy bÅ‚Ä…d,
.Er ENOSYS
w przypadku, w ktÃ³rym
.Nm crypt
w ogÃ³le nie jest obsÅ‚ugiwane. NiektÃ³re starsze aplikacje nie sÄ…
przygotowane do obsÅ‚ugi pustych wskaÅºnikÃ³w zwracanych przez
.Nm crypt .
Zachowanie opisane powyÅ¼ej w tej implementacji, czyli ustawianie
.Va errno
i zwracanie nieprawidÅ‚owego skrÃ³tu hasÅ‚a, rÃ³Å¼nego od
.Fa setting
wybrano, aby takie aplikacje zamknÄ™Å‚y siÄ™ i zawiodÅ‚y, gdy taki bÅ‚Ä…d
wystÄ…pi.
.Pp
Z powodÃ³w historycznych ograniczeÅ„, dotyczÄ…cych eksportu oprogramowania
kryptograficznego ze StanÃ³w Zjednoczonych,
.Nm crypt
jest opcjonalnÄ…
czÄ™Å›ciÄ… POSIX. Aplikacje powinny byÄ‡ dlatego przygotowane do sytuacji, gdy
.Nm crypt
nie jest dostÄ™pne, bÄ…dÅº zawsze zawodziÄ‡ (ustawiajÄ…c
.Va errno
na
.Er ENOSYS )
przy rozruchu.
.Pp
POSIX okreÅ›la, Å¼e
.Nm crypt
jest zadeklarowane w
.In unistd.h ,
lecz tylko gdy makro
.Dv _XOPEN_CRYPT
jest zdefiniowane i ma wartoÅ›Ä‡
wiÄ™kszÄ… lub rÃ³wnÄ… zero. Ze wzglÄ™du na to, Å¼e libcrypt nie zapewnia
.In unistd.h ,
deklaruje w zamian
.Nm crypt ,
.Nm crypt_r ,
.Nm crypt_rn
i
.Nm crypt_ra
w
.In crypt.h
\&amp;.
.Pp
Na mniejszoÅ›ci systemÃ³w (gÅ‚Ã³wnie ostatnich wersjach Solarisa),
.Nm crypt
uÅ¼ywa statycznego bufora przechowywania przypisanego wÄ…tkowi, ktÃ³ry czyni
bezpiecznym rÃ³wnoczesne wywoÅ‚ywanie z wielu wÄ…tkÃ³w, lecz nie zapobiega
kaÅ¼demu wywoÅ‚aniu z wÄ…tku, przed nadpisaniem wynikÃ³w poprzedniego wywoÅ‚ania.
.Sh USTERKI
NiektÃ³re implementacje
.Nm crypt ,
przy bÅ‚Ä™dzie zwracajÄ… nieprawidÅ‚owy
skrÃ³t, ktÃ³ry jest przechowywany w poÅ‚oÅ¼eniu tylko do odczytu, lub
zainicjowanym jedynie jednokrotnie, co oznacza, Å¼e wyczyszczenie bufora, na
ktÃ³ry wskazuje wartoÅ›Ä‡ zwracana przez
.Nm crypt
jest bezpieczne tylko
wtedy, gdy nie wystÄ…piÅ‚ bÅ‚Ä…d.
.Pp
.Vt "struct crypt_data"
moÅ¼e byÄ‡ doÅ›Ä‡ duÅ¼e (32kB w tej implementacji
libcrypt; ponad 128kB w niektÃ³rych innych implementacjach). Jest to na tyle
duÅ¼a wielkoÅ›Ä‡, Å¼e moÅ¼e byÄ‡ nierozsÄ…dne alokowanie jej na stosie.
.Pp
NiektÃ³re ostatnio zaprojektowane metody mieszania potrzebujÄ… jeszcze wiÄ™cej
pamiÄ™ci \[Bq]scratch\[rq], lecz interfejs
.Nm crypt_r
nie umoÅ¼liwia
zmiany rozmiaru
.Vt "struct crypt_data"
bez zÅ‚amania kompatybilnoÅ›ci
binarnej. Interfejs
.Nm crypt_rn
mÃ³gÅ‚by dokonywaÄ‡ wiÄ™kszych alokacji dla
okreÅ›lonych metod mieszania, lecz wywoÅ‚ujÄ…cy
.Nm crypt_rn
nie ma sposobu
okreÅ›lenia, jak duÅ¼o pamiÄ™ci zaalokowaÄ‡.
.Nm crypt_ra
sam alokuje pamiÄ™Ä‡,
lecz moÅ¼e wykonaÄ‡ jedynie pojedyncze wywoÅ‚anie do
.Xr malloc 3 .
.Sh ATRYBUTY
Informacje o pojÄ™ciach uÅ¼ywanych w tym rozdziale moÅ¼na znaleÅºÄ‡ w podrÄ™czniku
.Xr attributes 7 .
.TS
allbox;
lb lb lb
l l l.
Interfejs	Atrybut	WartoÅ›Ä‡
T{
.Nm crypt
T}	BezpieczeÅ„stwo wÄ…tkowe	MT-niebezpieczne race:crypt
T{
.Nm crypt_r ,
.Nm crypt_rn ,
.Nm crypt_ra
T}	BezpieczeÅ„stwo wÄ…tkowe	MT-bezpieczne
.TE
.sp
.Sh HISTORIA
Funkcja
.Nm crypt
oparta na wirnikach pojawiÅ‚a siÄ™ w
.At v6 .
\[Bq]Tradycyjne\[rq]
.Nm crypt ,
oparte na DES, pojawiÅ‚o siÄ™ w
.At v7 .
.Pp
.Nm crypt_r
pochodzi z biblioteki GNU C. WystÄ™puje rÃ³wnieÅ¼ funkcja
.Nm crypt_r
na HP-UX i MKS Toolkit, lecz prototypy i zachowanie rÃ³Å¼niÄ… siÄ™.
.Pp
.Nm crypt_rn
i
.Nm crypt_ra
pochodzÄ… z projektu Openwall.
.Sh ZOBACZ TAKÅ»E
.Xr crypt_gensalt 3 ,
.Xr getpass 3 ,
.Xr getpwent 3 ,
.Xr shadow 3 ,
.Xr login 1 ,
.Xr passwd 1 ,
.Xr crypt 5 ,
.Xr passwd 5 ,
.Xr shadow 5 ,
.Xr pam 8
.Pp
.Sh TÅUMACZENIE
Autorami polskiego tÅ‚umaczenia niniejszej strony podrÄ™cznika sÄ…:
Adam Byrtek &lt;alpha@irc.pl&gt;,
Andrzej Krzysztofowicz &lt;ankry@green.mf.pg.gda.pl&gt;,
MichaÅ‚ KuÅ‚ach &lt;michal.kulach@gmail.com&gt;
i
Robert Luberda &lt;robert@debian.org&gt;
.
.Pp
Niniejsze tÅ‚umaczenie jest wolnÄ… dokumentacjÄ…. BliÅ¼sze informacje o warunkach
licencji moÅ¼na uzyskaÄ‡ zapoznajÄ…c siÄ™ z
.Lk https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3
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 .
</pre></body></html>