Указание значения соли

Как базовый поставщик, так и расширенный поставщик могут указать значение и длину используемого значения соли . Базовый поставщик задает значение соли, используя значение параметра KP_SALT. Базовый поставщик всегда задает одиннадцать байтов значения соли.

Расширенный поставщик задает значение соли, вызывая CryptSetKeyParam с указанным значением параметра KP_SALT_EX и параметром pbData , указывающим на CRYPT_INTEGER_BLOB структуру, содержащую соль.

Примечание

Общая длина симметричного ключа расширенного поставщика и его соляное значение не могут превышать 128 бит.

 

KP_SALT по-прежнему предоставляется для обеспечения обратной совместимости с базовым поставщиком. Новые приложения должны использовать значение параметра KP_SALT_EX.

В следующем примере задается значение соли.

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