.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI; .\" %FreeBSD: src/lib/libc/rpc/des_crypt.3,v 1.4.2.3 2001/12/14 18:33:56 ru Exp % .\" $FreeBSD$ .\" .Dd October 6, 1987 .Dt DES_CRYPT 3 .Os .Sh 名称 .Nm des_crypt , ecb_crypt , cbc_crypt , des_setparity .Nd 高速 DES 暗号化 .Sh ライブラリ .Lb libc .Sh 書式 .In rpc/des_crypt.h .Ft int .Fn ecb_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode" .Ft int .Fn cbc_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode" "char *ivec" .Ft void .Fn des_setparity "char *key" .Sh 解説 .Fn ecb_crypt と .Fn cbc_crypt は、 .Tn NBS .Tn DES (Data Encryption Standard) を実現しています。これらのルーチンは、 .Xr crypt 3 より高速で汎用的です。また、 .Tn DES ハードウェアが用意されていれば、それも利用できます。 .Fn ecb_crypt は、 .Tn ECB (Electronic Code Book) モードで暗号化します。 これはデータのブロックを独立に暗号化するものです。 .Fn cbc_crypt は、 .Tn CBC (Cipher Block Chaining) モードで暗号化します。これは 連続するブロックを一つにつなげるものです。 .Tn CBC モードは、ブロックの挿入、削除、置き換えに対する保護を行ないます。 また、通常のテキストにおける正規性は暗号テキストには現れません。 .Pp これらのルーチンを使用する方法は次のとおりです。最初のパラメータ .Fa key , は、パリティ付き 8 バイトの暗号化キーです。キーのパリティ ( .Tn DES の場合、これは各バイトの下位ビットにあります) を設定するためには、 .Fn des_setparity を使用します。2 番めのパラメータ .Fa data には、暗号化または暗号解除されるデータが入っています。 3 番めのパラメータ .Fa datalen は、 .Fa data の長さ (バイト単位) であり、これは 8 の倍数でなければなりません。 4 番めのパラメータ .Fa mode は、いくつかのものの論理和 ( .Em OR Ns 'ing ) によって作成されます。暗号化の方向に関しては、 .Dv DES_ENCRYPT か .Dv DES_DECRYPT どちらかの .Em 論理和 を、ソフトウェア対ハードウェアの暗号化については、 .Dv DES_HW か .Dv DES_SW のどちらかの .Em 論理和 を取り、 .Dv DES_HW が指定されており、しかもハードウェアがない場合は、 暗号化はソフトウェアで実行され、ルーチンは .Er DESERR_NOHWDEVICE を返します。 .Fn cbc_crypt の場合、パラメータ .Fa ivec はチェイン作成用の 8 バイトの初期化ベクトルです。 これは戻り時に、次の初期化ベクトルへと更新されます。 .Sh エラー .Bl -tag -width [DESERR_NOHWDEVICE] -compact .It Bq Er DESERR_NONE エラーなし。 .It Bq Er DESERR_NOHWDEVICE 暗号化処理は成功しましたが、要求されたハードウェアではなく ソフトウェアで行われました。 .It Bq Er DESERR_HWERR ハードウェアまたはドライバでエラーが発生しました。 .It Bq Er DESERR_BADPARAM ルーチンに間違ったパラメータが指定されました。 .El .Pp 終了コード .Va stat が与えられると、マクロ .Fn DES_FAILED stat が偽になるのは、最初の 2 つのステータスについてだけです。 .Sh 関連項目 .\" .Xr des 1 , .Xr crypt 3 .Sh 制約 これらのルーチンは RPCSRC 4.0 では利用できません。 この情報は Secure RPC で求められる .Tn DES インタフェースの説明として提供されています。