指定 Salt 值

基本提供程序和扩展提供程序都可以指定要使用的 盐值 的值和长度。 基本提供程序使用 KP_SALT 参数值设置 salt 值。 基提供程序始终设置盐值的 11 个字节。

增强型提供程序通过调用 CryptSetKeyParam 并指定了 KP_SALT_EX 参数值,并使用 pbData 参数指向包含盐 的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");
}