NAZWA¶
crypt - szyfrowanie danych i haseł
SKŁADNIA¶
#define _XOPEN_SOURCE
#include <unistd.h>
char *crypt(const char *key, const char
*salt);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 crypt
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.