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
нескольких вещей. Для направления кодирования 'or' исполняется либо с
DES_ENCRYPT
либо с
DES_DECRYPT.
Для программного кодирования или для использования оборудования 'or' исполняется либо с
DES_HW
либо с
DES_SW.
Если указано
DES_HW
но оборудования не обнаружено, то кодирование выполняется в программном
режиме, а процедура возвращает
DESERR_NOHWDEVICE.
Для
cbc_crypt
параметр
ivec
является 8-байтовым вектором инициализации для последовательностей.
Он обновляется на следующий вектор инициализации при возврате.