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