Share via


Especificando um valor de sal

O Provedor Base e o Provedor Estendido podem especificar o valor e o comprimento do valor de sal a ser usado. O Provedor Base define um valor de sal usando o valor do parâmetro KP_SALT. O Provedor base sempre define onze bytes de valor de sal.

O Provedor Avançado define o valor de sal chamando CryptSetKeyParam com o valor do parâmetro KP_SALT_EX especificado e com o parâmetro pbData apontando para uma estrutura de CRYPT_INTEGER_BLOB que contém o sal.

Observação

O comprimento total de uma chave simétrica do Provedor Avançado e seu valor de sal não podem ser maiores que 128 bits.

 

KP_SALT continua a ser fornecido para compatibilidade com versões anteriores com o Provedor base. Aplicativos mais recentes devem usar o valor do parâmetro KP_SALT_EX.

O exemplo a seguir define um valor de sal.

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