cbc_crypt(3) быстрое

Other Alias

des_crypt, ecb_crypt, des_setparity, DES_FAILED

ОБЗОР

#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.