Salt 値の指定
基本プロバイダーと拡張プロバイダーの両方で、使用する ソルト値の値 と長さを指定できます。 基本プロバイダーは、KP_SALT パラメーター値を使用して salt 値を設定します。 基本プロバイダーは、常に 11 バイトのソルト値を設定します。
拡張プロバイダーは、 CryptSetKeyParam を呼び出し、KP_SALT_EX パラメーター値を指定し、 pbData パラメーターを使用して salt を含む CRYPT_INTEGER_BLOB 構造体を指すことで、salt 値を設定します。
Note
拡張プロバイダー 対称キー とそのソルト値の合計長は、128 ビットを超えることはできません。
KP_SALTは、基本プロバイダーとの下位互換性のために引き続き提供されます。 新しいアプリケーションでは、KP_SALT_EX パラメーター値を使用する必要があります。
次の例では、salt 値を設定します。
// Specify 4 bytes of salt.
BYTE rgbSalt[] = {0x01, 0x02, 0x03, 0x04};
CRYPT_DATA_BLOB sSaltData;
sSaltData.pbData = rgbSalt;
sSaltData.cbData = sizeof(rgbSalt);
// Set the 4 bytes of salt required.
// hKey is an HCRYPTPROV handle previously
// assigned, such as by CryptImportKey.
if (CryptSetKeyParam(
hKey,
KP_SALT_EX,
(BYTE*)&sSaltData,
0))
{
printf("The salt value is set.\n");
}
else
{
printf("Setting the salt value failed.\n");
}