crypt、encrypt、または setkey サブルーチン

目的

データを暗号化または暗号化解除します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

char *crypt (PW, Salt)
const char * PW, * Salt;
void encrypt (Block, EdFlag)
char Block[64];
int EdFlag;
void setkey (Key)
const char * Key;

説明

crypt および encrypt サブルーチンは、データを暗号化または暗号化解除します。 crypt サブルーチンは、指定された PW パラメーターを使用して、固定データ配列の片方向暗号化を実行します。 サブルーチンは Salt パラメーターを使用して、暗号化アルゴリズムを変更します。

encrypt サブルーチンは、 setkey サブルーチンへの以前の呼び出しによって提供された鍵を使用して、 Block パラメーターで提供されたデータを暗号化または暗号化解除します。 入力の Block パラメーターのデータは、64 文字の配列でなければなりません。 各文字は char 0 または char 1 でなければなりません。

libc.a for crypt から関数を静的にバインドする必要がある場合は、以下のようにします。

  1. ファイルを作成し、以下を追加します。
    #!
    ___setkey
    ___encrypt
    ___crypt
  2. リンクを実行します。
  3. Make ファイルに以下を追加します。
    -bI:YourFileName
    ここで、YourFileNameはステップ1で作成したファイルの名前です。 以下のようになります。
    LDFLAGS=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 文字のストリングでなければなりません。
A-Z
英大文字
a から z
小文字の英字
0 から 9
数字
.
ピリオド
/
スラッシュ
左中括弧 ({) が Salt パラメーターが指定する値の先頭文字です。ロード可能パスワード・アルゴリズム (LPA) は、中括弧 ({}) 内に指定された名前を使用します。 LPA 名の後に一連のソルト文字が続き、ドル記号 ($) で終わります。 ソルト文字の長さは、指定された LPA によって異なります。 以下の例は、 Salt パラメーターが指定する SMD5 LPA の可能な値を示しています。
{SMD5}JVDbGx8K$

戻り値

crypt サブルーチンは、暗号化されたパスワードを指すポインターを戻します。 このポインターが示す静的領域は、後続の呼び出しによって上書きされる可能性があります。

crypt サブルーチンが失敗すると、NULL ポインターが戻され、エラーを示すために errno グローバル変数が設定されます。

エラー・コード

encrypt サブルーチンは、以下のエラー・コードを返します。

項目 説明
ENOSYS ゼロ以外の値に設定された EdFlag パラメーターを使用して、 encrypt サブルーチンが呼び出されました。 また、 /usr/lib/libdes または /usr/lib/libdes_64 ファイルが存在しません。 /usr/lib/libdes および /usr/lib/libdes_64 ファイルは、 des ファイルセットの一部であり、 AIX 拡張パックにあります。