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");
}