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