Specifica di un valore salt

Sia il provider di base che il provider esteso possono specificare il valore e la lunghezza del valore salt da usare. Il provider di base imposta un valore salt usando il valore del parametro KP_SALT. Il provider di base imposta sempre undici byte di valore salt.

Il provider avanzato imposta il valore salt chiamando CryptSetKeyParam con il valore del parametro KP_SALT_EX specificato e con il parametro pbData che punta a una struttura CRYPT_INTEGER_BLOB contenente il sale.

Nota

La lunghezza totale di una chiave simmetrica del provider avanzato e il relativo valore salt non può essere maggiore di 128 bit.

 

KP_SALT continua a essere fornito per la compatibilità con le versioni precedenti con il provider di base. Le applicazioni più recenti devono usare il valore del parametro KP_SALT_EX.

Nell'esempio seguente viene impostato un valore 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");
}