指定 Salt 值
基底提供者和擴充提供者都可以指定要使用的 salt 值 和長度。 基底提供者會使用 KP_SALT 參數值來設定 salt 值。 基底提供者一律會設定 salt 值的十一個位元組。
增強型提供者會呼叫 CryptSetKeyParam 並指定 KP_SALT_EX 參數值,並使用 pbData 參數指向包含 salt 的 CRYPT_INTEGER_BLOB 結構來設定 salt 值。
注意
增強提供者 對稱金鑰 及其 salt 值的總長度不能大於 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");
}