DES_CRYPT(3) | FreeBSD Library Functions Manual | DES_CRYPT(3) |
名称
des_crypt, ecb_crypt, cbc_crypt, des_setparity — 高速 DES 暗号化ライブラリ
Standard C Library (libc, -lc)書式
#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);
解説
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() を使用します。 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_HWERR]
- ハードウェアまたはドライバでエラーが発生しました。
- [ DESERR_BADPARAM]
- ルーチンに間違った引数が指定されました。
終了コード stat が与えられると、マクロ DES_FAILED( stat) が偽になるのは、最初の 2 つのステータスについてだけです。
関連項目
crypt(3)制限
これらのルーチンは RPCSRC 4.0 では利用できません。この情報は Secure RPC で求められる DES インタフェースの説明として提供されています。October 6, 1987 | FreeBSD |