crypt、encrypt、または setkey サブルーチン
目的
データを暗号化または暗号化解除します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
void setkey (Key)
const char * Key;
const char * Key;
説明
crypt および encrypt サブルーチンは、データを暗号化または暗号化解除します。 crypt サブルーチンは、指定された PW パラメーターを使用して、固定データ配列の片方向暗号化を実行します。 サブルーチンは Salt パラメーターを使用して、暗号化アルゴリズムを変更します。
encrypt サブルーチンは、 setkey サブルーチンへの以前の呼び出しによって提供された鍵を使用して、 Block パラメーターで提供されたデータを暗号化または暗号化解除します。 入力の Block パラメーターのデータは、64 文字の配列でなければなりません。 各文字は char 0 または char 1 でなければなりません。
libc.a for crypt から関数を静的にバインドする必要がある場合は、以下のようにします。
- ファイルを作成し、以下を追加します。
#! ___setkey ___encrypt ___crypt - リンクを実行します。
- Make ファイルに以下を追加します。
ここで、YourFileNameはステップ1で作成したファイルの名前です。 以下のようになります。-bI:YourFileNameLDFLAGS=bnoautoimp -bI:/lib/syscalls.exp -bI:YourFileName -lc
これらのサブルーチンは、UNIXシステム実装との互換性のために提供されている。
パラメーター
| 項目 | 説明 |
|---|---|
| BLOCK | 値 (char) 0 および (char) 1 を含む 64 文字の配列を識別します。 戻り時に、このバッファーには暗号化または暗号化解除されたデータが含まれます。 |
| EdFlag | サブルーチンがデータを暗号化または暗号化解除するかどうかを決定します。 このパラメーターが 0 の場合、データは暗号化されます。 このパラメーターがゼロ以外の値の場合、データは暗号化解除されます。 /usr/lib/libdes または /usr/lib/libdes_64 ファイルが存在せず、 EdFlag パラメーターがゼロ以外の値に設定されている場合、 encrypt サブルーチンは ENOSYS エラー・コードを戻します。 /usr/lib/libdes および /usr/lib/libdes_64 ファイルは、 AIX® 拡張パックに配置されている des ファイルセットの一部です。 |
| キー | 0 と 1 のキャストの 64 エレメント配列を const char データ型として指定します。 Key パラメーターは、データの暗号化または暗号化解除に使用されます。 |
| PW | 暗号化するストリングを指定します。 |
| salt | 返される出力ストリングを生成するために PW パラメーターが適用するアルゴリズムを決定します。 左中括弧 ({) が Salt パラメーターが指定する値の先頭文字ではない場合、サブルーチンは Data Encryption Standard (DES) アルゴリズムを使用します。 DES アルゴリズムの場合は、 Salt パラメーターを使用して、4096 のいずれかの方法でハッシュ・アルゴリズムを変更します。 Salt パラメーターは、以下の文字タイプの 2 文字のストリングでなければなりません。
左中括弧 ({) が Salt パラメーターが指定する値の先頭文字です。ロード可能パスワード・アルゴリズム (LPA) は、中括弧 ({}) 内に指定された名前を使用します。 LPA 名の後に一連のソルト文字が続き、ドル記号 ($) で終わります。 ソルト文字の長さは、指定された LPA によって異なります。 以下の例は、 Salt パラメーターが指定する
SMD5 LPA の可能な値を示しています。 |
戻り値
crypt サブルーチンは、暗号化されたパスワードを指すポインターを戻します。 このポインターが示す静的領域は、後続の呼び出しによって上書きされる可能性があります。
crypt サブルーチンが失敗すると、NULL ポインターが戻され、エラーを示すために errno グローバル変数が設定されます。
エラー・コード
encrypt サブルーチンは、以下のエラー・コードを返します。
| 項目 | 説明 |
|---|---|
| ENOSYS | ゼロ以外の値に設定された EdFlag パラメーターを使用して、 encrypt サブルーチンが呼び出されました。 また、 /usr/lib/libdes または /usr/lib/libdes_64 ファイルが存在しません。 /usr/lib/libdes および /usr/lib/libdes_64 ファイルは、 des ファイルセットの一部であり、 AIX 拡張パックにあります。 |