Unix Man (Справочное руководство)


CRYPT(3X)


CRYPT(3X)

НАЗВАНИЕ


crypt - функции шифровки пароля и файла

СИНТАКСИС

cc [flag ...] file ... -lcrypt

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

void setkey (key) char *key;

void encrypt (block, flag) char *block; int flag;

char *des_crypt (key, salt) char *key, *salt;

void des_setkey (key) char *key;

void des_encrypt (block, flag) char *block; int flag;

int run_setkey (p,key) int p[2]; char *key;

int run_crypt (offset, buffer, count, p) long offset; char *buffer; unsigned int count; int p[2];

int crypt_close (p) int p[2];

ОПИСАНИЕ


des_crypt - это функция шифровки пароля. Она основана на алгоритме шифровки перемешиванием, назначение которого, помимо всего прочего - затруднить использование аппаратных средств контекстного поиска.

Аргумент key представляет собой пароль, введенный пользователем. Salt - это двухсимвольная строка, выбираемая из множества [a-zA-Z0-9./]. Она настраивает алгоритм перемешивания на один из 4096 вариантов, после чего пароль используется как ключ для циклической шифровки некоторой строковой константы. Возвращаемое значение указывает на зашифрованный пароль. Его первые два символа равны salt.

Функции des_setkey и des_encrypt обеспечивают доступ (на довольно примитивном уровне) к алгоритму перемешивания. Аргумент функции des_setkey - это символьный массив длиной 64, содержащий только символы с числовым значением 0 и 1 и изображающий битовую строку. В каждой из восьми груп по 8 символов-"битов" наименее значащий "бит" игнорируется. Полученный 56-битовый ключ передается компьютеру и используется в алгоритме перемешивания для шифровки строки block в функции des_encrypt.

Аргумент функции des_encrypt - символьный массив длиной 64, содержащий только символы с числовым значением 0 и 1. Аргумент преобразуется на месте в массив того же вида, изображающий биты аргумента после применения алгоритма перемешивания с ключом, установленным в функции des_setkey. Если flag равен 0, аргумент зашифровывается, в противном случае расшифровывается.

Следует заметить, что международная версия не обеспечивает расшифровку. Международная версия входит в состав Утилит языка программирования С, а национальная версия - в состав Утилит управления защитой. Попытка использовать международную версию crypt для расшифровки вызовет сообщение об ошибке.

Функции crypt, setkey и encrypt являются "фасадными". Они вызывают функции des_crypt,des_setkey и des_encrypt соответственно.

Программы run_setkey и run_crypt разработаны для приложений, использующих криптографические средства [таких, как и ], и требующих совместимости с утилитой пользователя crypt(1). Run_setkey образует два канала p[0] и p[1], соединяющих с crypt(1), при этом аргумент key используется как пароль. Run_crypt преобразует текст из открытого в зашифрованный (и наоборот), обращаясь к crypt(1) через каналы p[0] и p[1]. Аргумент offset указывает позицию относительно начала файла, с которой начинается текст, заданный аргументом buffer; аргумент count указывает длину текста. По завершении шифровки используется функция crypt_close, закрывающая каналы.

Run_setkey возвращает -1, если соединение с crypt(1) не установлено (это возможно в международной версии UNIX, где утилита crypt(1) недоступна). Если функции передан пустой ключ, возвращается 0, в остальных случаях возвращается 1. Run_crypt возвращает -1 при неуспешном чтении или записи по каналу, образованному run_setkey, в противном случае возвращается 0.

ДИАГНОСТИКА





Начало  Назад  Вперед



Книжный магазин