des_cryptのヘルプ・マニュアル
日本語 英語
des_crypt --help
man des_crypt
DES_CRYPT(3) Linux Programmer’s Manual DES_CRYPT(3)
名前
des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED - 高速な DES
暗号化
書式
#include
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 はブロックの挿入・削除・置き換えから保護する。また平文の規則性が暗
号文に現れない。
これらのルーチンの使用法を示す。第 1 引き数 key はパリティ付きの 8 バイ
トの暗号化鍵である。鍵のパリティを設定するには des_setparity() を使うこ
と。 DES の場合、鍵のパリティは各バイトの最下位ビットである。第 2 引 き
数 data は暗号化または復号化されるデータを含む。第 3 引き数 datalen は
data のバイト長であり、8 の倍数でなければならない。第 4 引き数 mode は
い くつかの値を OR することで作成する。暗号化の方向 (訳註: 暗号化なのか
復号化なのか) を指定するため、 DES_ENCRYPT または DES_DECRYPT を OR す
る 。 暗 号化をソフトウェアで行うかハードウェアで行うかを指定するため、
DES_HW または DES_SW を OR する。 DES_HW が指定されていて、かつハードウ
ェ ア が な い 場 合 、 暗 号 化 はソフトウェアで実行されて、ルーチンは
DESERR_NOHWDEVICE を返す。 cbc_crypt() において、引き数 ivec はデータブ
ロックを連鎖させる際の 8 バイトの初期化ベクトルである。この引き数はルー
チンから戻るときに次の初期化ベクトルに更新される。
返り値
DESERR_NONE エラーなし。
DESERR_NOHWDEVICE 暗号化は成功したが、要求されたハードウェアの代わ り
にソフトウェアで実行された。
DESERR_HWERROR ハードウェアまたはドライバでエラーが発生した。
DESERR_BADPARAM ルーチンへの引き数が不正である。
結果の状態 stat を与えたとき、マクロ DES_FAILED(stat) が false になるの
は、最初の 2 つだけである。
バージョン
これらのルーチンは libc 4.6.27 以降と glibc 2.1 以降に存在する。
準拠
4.3BSD. POSIX.1-2001 にはない。
関連項目
des(1), crypt(3), xcrypt(3)
2007-05-18 DES_CRYPT(3)
DES_CRYPT(3) Linux Programmer’s Manual DES_CRYPT(3)
NAME
des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED - fast DES
encryption
SYNOPSIS
#include
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);
DESCRIPTION
ecb_crypt() and cbc_crypt() implement the NBS DES (Data Encryption
Standard). These routines are faster and more general purpose than
crypt(3). They also are able to utilize DES hardware if it is avail-
able. ecb_crypt() encrypts in ECB (Electronic Code Book) mode, which
encrypts blocks of data independently. cbc_crypt() encrypts in CBC
(Cipher Block Chaining) mode, which chains together successive blocks.
CBC mode protects against insertions, deletions and substitutions of
blocks. Also, regularities in the clear text will not appear in the
cipher text.
Here is how to use these routines. The first argument, key, is the
8-byte encryption key with parity. To set the key’s parity, which for
DES is in the low bit of each byte, use des_setparity(). The second
argument, data, contains the data to be encrypted or decrypted. The
third argument, datalen, is the length in bytes of data, which must be
a multiple of 8. The fourth argument, mode, is formed by OR ’ing
together some things. For the encryption direction OR in either
DES_ENCRYPT or DES_DECRYPT. For software versus hardware encryption,
OR in either DES_HW or DES_SW. If DES_HW is specified, and there is no
hardware, then the encryption is performed in software and the routine
returns DESERR_NOHWDEVICE. For cbc_crypt(), the argument ivec is the
8-byte initialization vector for the chaining. It is updated to the
next initialization vector upon return.
RETURN VALUE
DESERR_NONE No error.
DESERR_NOHWDEVICE Encryption succeeded, but done in software instead
of the requested hardware.
DESERR_HWERROR An error occurred in the hardware or driver.
DESERR_BADPARAM Bad argument to routine.
Given a result status stat, the macro DES_FAILED(stat) is false only
for the first two statuses.
VERSIONS
These routines are present in libc 4.6.27 and later, and in glibc 2.1
and later.
CONFORMING TO
4.3BSD. Not in POSIX.1-2001.
SEE ALSO
des(1), crypt(3), xcrypt(3)
COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2007-05-18 DES_CRYPT(3)