Other Alias
des_crypt, ecb_crypt, cbc_crypt, 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)