CRYPT(3C)
НАЗВАНИЕ
crypt, setkey, encrypt - шифровка хешированием
СИНТАКСИС
char *crypt (key, salt)
char *key, *salt;
void setkey (key)
char *key;
void encrypt (block, ignored)
char *block;
int ignored;
ОПИСАНИЕ
Функция crypt предназначена для шифровки пароля. Она
основана на алгоритме шифровки хешированием, назначение
которого, помимо всего прочего, - предупредить использование аппаратных средств раскрытия ключа.
Аргумент key представляет собой пароль, введенный пользователем. Salt - это двухсимвольная цепочка, выбираемая из множества [a-zA-Z0-9./]. Она настраивает алгоритм хеширования на один из 4096 вариантов, после чего
пароль используется как ключ для циклической шифровки
некоторой текстовой константы. Возвращаемое значение
указывает на зашифрованный пароль. Его первые два символа равны salt.
Функции setkey и encrypt обеспечивают доступ (на довольно примитивном уровне) к алгоритму хеширования. Аргумент функции setkey - это символьный массив длиной
64, содержащий только символы с числовым значением 0 и
1 и изображающий цепочку бит. В каждой из восьми групп
по 8 символов наименее значащий "бит" игнорируется. Полученный 56-битный ключ передается компьютеру и используется в алгоритме хеширования для шифровки цепочки
block в функции encrypt.
Аргумент функции encrypt - символьный массив длиной 64,
содержащий только символы с числовым значением 0 и 1.
Аргумент преобразуется на месте в массив того же вида,
изображающий биты аргумента после применения алгоритма
хеширования с ключом, установленным в функции setkey.
Аргумент ignored не используется, но должен быть задан.
СМ. ТАКЖЕ
getpass(3C), passwd(4).
login(1), makekey(1), passwd(1) в Справочнике пользователя.
ОГРАНИЧЕНИЯ
Значение, возвращаемое функцией crypt, указывает на
один и тот же статический массив, содержимое которого
полностью изменяется после каждого вызова.