スポンサーリンク

CIPHER(3) FreeBSD ライブラリ関数マニュアル CIPHER(3)

名称

setkey, encrypt, des_setkey, des_cipher − DES 暗号化

ライブラリ

FreeSec Crypt Library (libcipher, −lcipher)

書式

#include <unistd.h>

int

setkey(const char *key);

int

encrypt(char *block, int flag);

int

des_setkey(const char *key);

int

des_cipher(const char *in, char *out, long salt, int count);

解説

encrypt(), setkey(), des_setkey(), des_cipher() 関数は、 DES アルゴリズム へのアクセス手段を提供します。 setkey() には、バイナリ値 (数値 0 または 1) を持つ 64バイトの配列を渡します。この配列から 56 ビットの鍵が取り出さ れます。これは、配列を 8 バイトのグループに分割し、各グループの最後のビッ トを無視することで行ないます。このビットは DES によりバイトパリティチェッ クのために予約されていますが、これらの関数はこのビットを無視します。

encrypt() の引数 block もまた、バイナリ値を持つ 64 バイトの配列です。 flag の値が 0 の場合、 block は暗号化されます。それ以外の場合は復号化され ます。 setkey() により指定した鍵を使い、配列の値を処理した後で、処理結果 は元の配列 block に返されます。

des_setkey() の引数は長さ 8 のキャラクタの配列です。各キャラクタの最下位 ビット (パリティビット) は無視され、残りのビットをくっつけて 56 ビットの 鍵を形成します。 des_cipher() 関数は countabs(3) 回 DES を繰り返し て、 in にある 8 キャラクタに格納された 64 ビットの値を暗号化 ( count が 負の場合は復号化) し、結果の 64 ビットを 8 キャラクタにして out (これは、 in と同じ場所でも構いません) に格納します。 salt は DES アルゴリズムに対 し、16777216 通りまたは 4096 通り (つまり、24 ビットまたは 12 ビット) の 中から 1 通りという不規則性を導入します ( salt のビット i が設定されてい る場合、 DES E-box 出力中のビット i とビット i+24 とが交換されます)。

setkey(), encrypt(), des_setkey(), des_cipher() 関数は処理に成功した場合 0 を返し、失敗した場合 1 を返します。

setkey() と des_setkey() 関数は同じ鍵空間を操作します。

関連項目

login(1), passwd(1), crypt(3), getpass(3), passwd(5)

歴史

このライブラリ (FreeSec 1.0) は、アメリカ合衆国のみで使える NetBSD libcrypt 暗号化ライブラリに対して、そのような障害のない置き換えとしてアメ リカ合衆国の外で開発されました。ユーザは、このコード (とこのライブラリを 静的リンクしたプログラム) は合衆国の外に輸出できないことを理解しておかね ばなりません。もっとも、輸入できることは明らかなのですが。

作者

David Burren ⟨davidb@werj.com.au⟩

FreeSec 1.0 March 9, 1994 FreeSec 1.0

スポンサーリンク