Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       crypt - szyfrowanie danych i haseł

SKŁADNIA

       #define _XOPEN_SOURCE
       #include <unistd.h>

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

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(3) jest złym  rozwiązaniem
       dla zastosowań innych niż autoryzacja za pomocą hasła.  Jeśli planujesz
       wykorzystać crypt(3) dla celów kryptograficznych, nie rób tego. Zdobądź
       dobrą książkę o szyfrowaniu i jedną z ogólnodostępnych bibliotek DES.

WARTOŚĆ ZWRACANA

       Zwracany   jest   wskaźnik   do   zaszyfrowanego  hasła.   W  przypadku
       wywstąpienia błędu, zwracana jest wartość NULL.

BŁĘDY

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

ROZSZERZENIE GNU

       Wersja  tej  funkcji  zawarta  w  glibc2  posiada następujące dodatkowe
       własności.  Jeśli salt jest łańcuchem  znaków  rozpoczynającym  się  od
       znaków  "$1$",  po  których  następuje  co  najwyżej  osiem  znaków  i,
       opcjonalnie, zakończonym "$", to zamiast używać  maszyny  DES,  funkcja
       crypt zawarta w glibc używa algorytmu opartego na MD5, wyprowadzając do
       34 bajtów w postaci "$1$<łańcuch>$", gdzie  "<łańcuch>"  składa  się  z
       wspomnianych wcześniej nie więcej niż 8 znaków występujących po "$1$" w
       salt, po których następują 22 znaki należące do  zbioru  [a-zA-Z0-9./].
       Cały klucz jest tu znaczący (zamiast tylko pierwszych 8 bajtów).

       Programy  korzystające z tej funkcji muszą być konsolidowane z -lcrypt.

ZGODNE Z

       SVID, X/OPEN, BSD 4.3, POSIX 1003.1-2001

ZOBACZ TAKŻE

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

                                  2001-12-23                          CRYPT(3)