|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > e > encrypt - ライブラリコールの説明 encrypt - ライブラリコールの説明 - Linux コマンド集 一覧表名前encrypt, setkey, encrypt_r, setkey_r - 64 ビットのメッセージを暗号化する 書式
#define _XOPEN_SOURCE
説明これらの関数は、64 ビットのメッセージの暗号化と復号化を行う。 setkey ()関数は encrypt ()によって使われる暗号鍵を設定する。 ここで使われる引き数 key は 64 バイトの配列であり、各バイトは数値 1 または 0 である。 n=8*i-1 に対するバイト key[n] は無視されるので、 有効な暗号鍵の長さは 56 ビットになる。 encrypt ()関数は、 edflag が 0 の場合は暗号化し、1 が渡された場合は復号化するというように、 渡されたバッファを変更する。 引き数 key と同様に、 block はエンコードされた実際の値を表現するビットの配列である。 結果はこの同じ配列を使って返される。 これら 2 つの関数はリエントラント (reentrant) ではない。
つまり暗号鍵データは静的な領域に保存される。
関数
setkey_r
()と
encrypt_r
()はリエントラントなバージョンである。
これらの関数は暗号鍵データを保持するために以下のような構造体を使う。
struct crypt_data {
char keysched[16 * 8];
char sb0[32768];
char sb1[32768];
char sb2[32768];
char sb3[32768];
char crypt_3_buf[14];
char current_salt[2];
long int current_saltbits;
int direction, initialized;
};
setkey_r ()を呼び出す前には、 data->initialized を 0 に設定すること。 返り値これらの関数は、なにも値を返さない。 エラー上記の関数を呼び出す前に errno を 0 に設定すること。 成功した場合、この値は変更されない。
例
この例を glibc2.2 でコンパイルするには libcrypt とリンクする必要がある。
実際に動作させるためには、配列 key[] と txt[] に
有効なビットパターンを指定しなければならない。
<crypt.h> ヘッダをインクルードすると、無条件に
setkey
()
と
encrypt
()のプロトタイプが提供される点に注意すること。
#include <crypt.h> 注意glibc2.2 では、これらの関数は DES アルゴリズムを使う。 準拠関数 encrypt ()と setkey ()は SVr4, SUSv2, and POSIX.1-2001 に準拠する。 関数 encrypt_r ()と setkey_r ()は GNU 拡張である。 関連項目
cbc_crypt
(3),
crypt
(3),
ecb_crypt
(3),
fcrypt
(3),
feature_test_macros
(7)
|
|