focal (3) crypt.3.gz

Provided by: manpages-pl-dev_0.7-2_all bug

NAZWA

       crypt, crypt_r - szyfrowanie danych i haseł

SKŁADNIA

       #define _XOPEN_SOURCE       /* Patrz feature_test_macros(7) */
       #include <unistd.h>

       char *crypt(const char *key, const char *salt);

       #define _GNU_SOURCE         /* Patrz feature_test_macros(7) */
       #include <crypt.h>

       char *crypt_r(const char *key, const char *salt,
                     struct crypt_data *data);

       Proszę linkować z -lcrypt.

OPIS

       crypt  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.

       Argument key to hasło wpisane przez użytkownika.

       Argument salt to łańcuch dwóch znaków z zestawu [a-zA-Z0-9./]. Ten łańcuch  umożliwia  kodowanie  jednego
       hasła na 4096 różnych sposobów.

       Poprzez pobranie 7 najmniej znaczących bitów pierwszych ośmiu znaków łańcucha key 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.

       Uwaga:  Istnieje 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 crack(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 passwd(1), który podczas zmiany  lub  wyboru
       hasła sprawdza, czy nie jest łatwe do złamania.

       Sam  algorytm  DES  ma  kilka  wad,  dlatego  crypt()  jest  złym  rozwiązaniem dla zastosowań innych niż
       autoryzacja za pomocą hasła. Jeśli planujesz wykorzystać crypt() dla  celów  kryptograficznych,  nie  rób
       tego. Zdobądź dobrą książkę o szyfrowaniu i jedną z ogólnodostępnych bibliotek DES.

       crypt_r()   jest  wielodostępową  wersją  crypt().  Struktura  wskazywana  przez  data  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ę crypt_r() powinna przed jej pierwszym wywołanie ustawić data->initialized na
       zero.

WARTOŚĆ ZWRACANA

       W razie powodzenia zwracany jest  wskaźnik  do  zaszyfrowanego  hasła.  W  przypadku  wystąpienia  błędu,
       zwracana jest wartość NULL.

BŁĘDY

       EINVAL salt ma nieprawidłowy format.

       ENOSYS Funkcja crypt() nie została zaimplementowana, prawdopodobnie ze względu na ograniczenia eksportowe
              Stanów Zjednoczonych.

       EPERM  /proc/sys/crypto/fips_enabled ma niezerową wartość i  próbowano  użyć  słabego  typu  szyfrowania,
              takiego jak DES.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

       ┌──────────┬────────────────────────┬──────────────────────┐
       │InterfejsAtrybutWartość              │
       ├──────────┼────────────────────────┼──────────────────────┤
       │crypt()   │ Bezpieczeństwo wątkowe │ MT-Unsafe race:crypt │
       ├──────────┼────────────────────────┼──────────────────────┤
       │crypt_r() │ Bezpieczeństwo wątkowe │ MT-Safe              │
       └──────────┴────────────────────────┴──────────────────────┘

ZGODNE Z

       crypt(): POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.  crypt_r() jest rozszerzeniem GNU.

UWAGI

   Uwagi dotyczące biblioteki glibc
       Wersja glibc2 tej funkcji obsługuje dodatkowe algorytmy szyfrowania.

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

              $id$salt$encrypted

       to zamiast używać DES,  id  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 id:

              ID  | Metoda
              ────────────────────────────────────────────────
              1   | MD5
              2a  | Blowfish (nie w głównym glibc; dodane
                  | w kilku dystrybucjach Linuksa)
              5   | SHA-256 (od glibc 2.7)
              6   | SHA-512 (od glibc 2.7)

       Tak  więc  $5$salt$encrypted  jest  hasłem  zakodowanym  w SHA-256, a $6$salt$encrypted jest zakodowane w
       SHA-512

       "salt" oznacza do 16 znaków następujących po "$id$ 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:

       MD5     | 22 znaki
       SHA-256 | 43 znaki
       SHA-512 | 86 znaków

       Znaki w "salt" i "encrypted" są losowane ze zbioru [a-zA-Z0-9./]. W implementacjach MD5 i SHA cały key ma
       znaczenie (zamiast tylko pierwszych ośmiu znaków, jak to jest w przypadku DES).

ZOBACZ TAKŻE

       login(1), passwd(1), encrypt(3), getpass(3), passwd(5)

O STRONIE

       Angielska wersja tej strony pochodzi z wydania 4.07 projektu Linux man-pages. Opis  projektu,  informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

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>.

       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ą  4.07 oryginału.

                                                   2015-08-08                                           CRYPT(3)