DES_CRYPT(3)

ИМЯ
des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED - быстрое шифрование DES

ОБЗОР
#include <rpc/des_crypt.h>

int ecb_crypt(char *key, char *data, unsigned datalen,
              unsigned mode);

int cbc_crypt(char *key, char *data, unsigned datalen,
              unsigned mode, char *ivec);

void des_setparity(char *key);

int DES_FAILED(int status);

ОПИСАНИЕ
В функциях ecb_crypt() и cbc_crypt() реализован стандарт шифрования данных NBS DES (Data Encryption Standard). Они более быстры и имеют более широкое предназначение, чем crypt(3). Также они могут использовать (при наличии) оборудование DES. Функция ecb_crypt() шифрует данные в режиме ECB (Electronic Code Book), при котором блоки данных шифруются независимо друг от друга. Функция cbc_crypt() шифрует данные в режиме CBC (Cipher Block Chaining), при котором вместе связываются рядом стоящие блоки. Режим CBC защищает от вставки, удаления или подмены блоков. Также повторяющиеся отрезки простого текста не появятся в зашифрованном в таком режиме коде.

Рассмотрим применение этих функций. Первый параметр, key, является 8-байтным ключом шифрования с чётностью. Для установки чётности ключа, которая для DES находится в младшем бите каждого байта, используйте des_setparity. Второй параметр, data, содержит данные для шифрования или расшифровки. Третий параметр, datalen, задаёт длину блока данных data в байтах, длина должна быть кратна 8. Четвертый параметр, mode, формируется через логическое сложение (OR) нескольких вещей. Чтобы указать тип операции добавляется либо DES_ENCRYPT, либо DES_DECRYPT. Чтобы применить программное шифрование или использовать специальное оборудование, добавляется либо DES_HW, либо DES_SW. Если указано DES_HW и оборудование не обнаружено, то шифрование выполняется в программном режиме, а функция возвращает DESERR_NOHWDEVICE. В cbc_crypt() параметр ivec используется как 8-байтовый вектор инициализации для шифрования цепочек. Он обновляется на следующий вектор инициализации при возврате.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
DESERR_NONE
    Нет ошибок.
DESERR_NOHWDEVICE
    Шифрование выполнено, но использовался программный метод, так как не было обнаружено запрошенное оборудование шифрования.
DESERR_HWERROR
    Ошибка в оборудовании или драйвере.
DESERR_BADPARAM
    Некорректный параметр функции.

Указывая итоговое состояние stat, значение макроса DES_FAILED(stat) будет ложно только для первых двух состояний.

ВЕРСИИ
Эти функции присутствуют в glibc 2.1 и более новых.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
ecb_crypt(), cbc_crypt(), des_setparity() | безвредность в нитях | безвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ
4.3BSD. Отсутствует в POSIX-1.

СМОТРИТЕ ТАКЖЕ
des(1), crypt(3), xcrypt(3)