Scroll to navigation

DES_CRYPT(3) Руководство программиста Linux 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-байтовый вектор инициализации для шифрования цепочек. Он обновляется на следующий вектор инициализации при возврате.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Нет ошибок.
Шифрование выполнено, но использовался программный метод, так как не было обнаружено запрошенное оборудование шифрования.
Ошибка в оборудовании или драйвере.
Некорректный параметр функции.

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

ВЕРСИИ

These functions were added to glibc in version 2.1.

Функции ecb_crypt(), ecb_crypt(), crypt_r() и des_setparity() удалены из glibc 2.28, так как они используют блочный шифр DES, который теперь считается небезопасным. В приложениях следует использовать современную библиотеку шифрования, например libgcrypt.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
ecb_crypt(), cbc_crypt(), des_setparity() Безвредность в нитях MT-Safe

СООТВЕТСТВИЕ СТАНДАРТАМ

4.3BSD. Отсутствует в POSIX-1.

СМ. ТАКЖЕ

des(1), crypt(3), xcrypt(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

11 апреля 2020 г.