KeyDerivationParameters.BuildForSP800108(IBuffer, IBuffer) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建 KeyDerivationParameters 对象,用于计数器模式、基于哈希的消息身份验证代码 (HMAC) 密钥派生函数。
public:
static KeyDerivationParameters ^ BuildForSP800108(IBuffer ^ label, IBuffer ^ context);
static KeyDerivationParameters BuildForSP800108(IBuffer const& label, IBuffer const& context);
public static KeyDerivationParameters BuildForSP800108(IBuffer label, IBuffer context);
function buildForSP800108(label, context)
Public Shared Function BuildForSP800108 (label As IBuffer, context As IBuffer) As KeyDerivationParameters
参数
- label
- IBuffer
指定派生密钥材料的用途的缓冲区。
- context
- IBuffer
指定与派生的密钥材料相关的信息的缓冲区。 例如,上下文可以标识派生密钥材料的参与方,还可以识别派生双方已知的 nonce。
返回
指在密钥派生期间使用的参数。
示例
public void SampleDeriveFromSP800108()
{
// Create a string that contains the algorithm name.
String strAlgName = KeyDerivationAlgorithmNames.Sp800108CtrHmacSha256;
// Open the specified algorithm.
KeyDerivationAlgorithmProvider objKdfProv = KeyDerivationAlgorithmProvider.OpenAlgorithm(strAlgName);
// Specify the requested size, in bytes, of the derived key.
UInt32 targetSize = 32;
// Create a buffer that contains the label value.
String strPurpose = "Purpose";
IBuffer buffLabel = CryptographicBuffer.ConvertStringToBinary(strPurpose, BinaryStringEncoding.Utf8);
// Create a buffer that contains the context value.
byte[] Nonce = { 1, 1, 0, 0, 0, 0, 0, 0};
IBuffer buffContext = CryptographicBuffer.CreateFromByteArray(Nonce);
// Create the derivation parameters.
KeyDerivationParameters kdf800108Params = KeyDerivationParameters.BuildForSP800108(buffLabel, buffContext);
// Create a secret value.
IBuffer buffSecret = CryptographicBuffer.GenerateRandom(32);
// Create a key from the secret value.
CryptographicKey keyOriginal = objKdfProv.CreateKey(buffSecret);
// Derive a key based on the original key and the derivation parameters.
IBuffer keyDerived = CryptographicEngine.DeriveKeyMaterial(
keyOriginal,
kdf800108Params,
targetSize);
// Encode the key to a hexadecimal value (for display)
String strKeyHex = CryptographicBuffer.EncodeToHexString(keyDerived);
}
注解
可以将以下算法名称与 OpenAlgorithm 函数一起使用,以打开 SP800108 KDF 算法提供程序:
- KeyDerivationAlgorithmNames.Sp800108CtrHmacMd5
- KeyDerivationAlgorithmNames.Sp800108CtrHmacSha1
- KeyDerivationAlgorithmNames.Sp800108CtrHmacSha256
- KeyDerivationAlgorithmNames.Sp800108CtrHmacSha384
- KeyDerivationAlgorithmNames.Sp800108CtrHmacSha512