コンテンツにスキップ

アルゴリズム - パスワードベース

Functions

Name
int wc_PBKDF1(byte * output, const byte * passwd, int pLen, const byte * salt, int sLen, int iterations, int kLen, int hashType)
この関数は、パスワードベース鍵導出関数1(PBKDF1)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーはハッシュ関数としてSHAとMD5のいずれかを選択できます。
int wc_PBKDF2(byte * output, const byte * passwd, int pLen, const byte * salt, int sLen, int iterations, int kLen, int hashType)
この関数は、パスワードベース鍵導出関数2(PBKDF2)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。
int wc_PKCS12_PBKDF(byte * output, const byte * passwd, int passLen, const byte * salt, int saltLen, int iterations, int kLen, int hashType, int id)
この関数は、RFC 7292付録Bに記述されているパスワードベース鍵導出関数(PBKDF)を実装します。この関数は、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。

Functions Documentation

function wc_PBKDF1

int wc_PBKDF1(
    byte * output,
    const byte * passwd,
    int pLen,
    const byte * salt,
    int sLen,
    int iterations,
    int kLen,
    int hashType
)

この関数は、パスワードベース鍵導出関数1(PBKDF1)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーはハッシュ関数としてSHAとMD5のいずれかを選択できます。

Parameters:

  • output 生成された鍵を格納するバッファへのポインタ。少なくともkLenの長さである必要があります
  • passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
  • pLen 鍵導出に使用するパスワードの長さ
  • salt 鍵導出に使用するソルトを含むバッファへのポインタ
  • sLen ソルトの長さ
  • iterations ハッシュを処理する回数
  • kLen 導出される鍵の希望の長さ。選択されたハッシュのダイジェストサイズより長くしないでください
  • hashType 使用するハッシュアルゴリズム。有効な選択肢はWC_MD5とWC_SHAです

See:

Return:

  • 0 入力パスワードから鍵の導出に成功した場合に返されます
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合(有効なタイプはMD5とSHA)、iterationsが1未満の場合、または要求された鍵の長さ(kLen)が提供されたハッシュのハッシュ長より大きい場合に返されます
  • MEMORY_E SHAまたはMD5オブジェクトのメモリ割り当て中にエラーが発生した場合に返されます

Example

int ret;
byte key[WC_MD5_DIGEST_SIZE];
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化

ret = wc_PBKDF1(key, pass, sizeof(pass), salt, sizeof(salt), 1000,
sizeof(key), WC_MD5);
if ( ret != 0 ) {
    // パスワードからの鍵導出エラー
}

function wc_PBKDF2

int wc_PBKDF2(
    byte * output,
    const byte * passwd,
    int pLen,
    const byte * salt,
    int sLen,
    int iterations,
    int kLen,
    int hashType
)

この関数は、パスワードベース鍵導出関数2(PBKDF2)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。

Parameters:

  • output 生成された鍵を格納するバッファへのポインタ。kLenの長さである必要があります
  • passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
  • pLen 鍵導出に使用するパスワードの長さ
  • salt 鍵導出に使用するソルトを含むバッファへのポインタ
  • sLen ソルトの長さ
  • iterations ハッシュを処理する回数
  • kLen 導出される鍵の希望の長さ
  • hashType 使用するハッシュアルゴリズム。有効な選択肢は、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512です

See:

Return:

  • 0 入力パスワードから鍵の導出に成功した場合に返されます
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合、またはiterationsが1未満の場合に返されます
  • MEMORY_E HMACオブジェクトのメモリ割り当て中にエラーが発生した場合に返されます

Example

int ret;
byte key[64];
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化

ret = wc_PBKDF2(key, pass, sizeof(pass), salt, sizeof(salt), 2048, sizeof(key),
WC_SHA512);
if ( ret != 0 ) {
    // パスワードからの鍵導出エラー
}

function wc_PKCS12_PBKDF

int wc_PKCS12_PBKDF(
    byte * output,
    const byte * passwd,
    int passLen,
    const byte * salt,
    int saltLen,
    int iterations,
    int kLen,
    int hashType,
    int id
)

この関数は、RFC 7292付録Bに記述されているパスワードベース鍵導出関数(PBKDF)を実装します。この関数は、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。

Parameters:

  • output 生成された鍵を格納するバッファへのポインタ。kLenの長さである必要があります
  • passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
  • passLen 鍵導出に使用するパスワードの長さ
  • salt 鍵導出に使用するソルトを含むバッファへのポインタ
  • saltLen ソルトの長さ
  • iterations ハッシュを処理する回数
  • kLen 導出される鍵の希望の長さ
  • hashType 使用するハッシュアルゴリズム。有効な選択肢は、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512です
  • id 鍵生成の目的を示すバイト識別子。鍵出力を多様化するために使用され、次のように割り当てる必要があります。ID=1: 疑似乱数ビットは、暗号化または復号を実行するための鍵材料として使用されます。ID=2: 疑似乱数ビットは、暗号化または復号のためのIV(初期値)として使用されます。ID=3: 疑似乱数ビットは、MAC処理のための完全性鍵として使用されます。

See:

Return:

  • 0 入力パスワードから鍵の導出に成功した場合に返されます
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合、iterationsが1未満の場合、または要求された鍵の長さ(kLen)が提供されたハッシュのハッシュ長より大きい場合に返されます
  • MEMORY_E メモリ割り当て中にエラーが発生した場合に返されます
  • MP_INIT_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_READ_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_CMP_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_INVMOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_EXPTMOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_MOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_MUL_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_ADD_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_MULMOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_TO_E 鍵生成中にエラーが発生した場合に返される可能性があります
  • MP_MEM 鍵生成中にエラーが発生した場合に返される可能性があります

Example

int ret;
byte key[64];
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化

ret = wc_PKCS12_PBKDF(key, pass, sizeof(pass), salt, sizeof(salt), 2048,
sizeof(key), SHA512, 1);
if ( ret != 0 ) {
    // パスワードからの鍵導出エラー
}

Updated on 2025-12-12 at 03:08:17 +0000