Other Alias
des_crypt, ecb_crypt, cbc_crypt, des_setparityОБЗОР
#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) |