Compartilhar via


CryptographicEngine.DeriveKeyMaterial Método

Definição

Deriva uma chave de outra chave usando uma função de derivação de chave. Para obter mais informações, consulte as classes KeyDerivationAlgorithmProvider e KeyDerivationParameters .

public:
 static IBuffer ^ DeriveKeyMaterial(CryptographicKey ^ key, KeyDerivationParameters ^ parameters, unsigned int desiredKeySize);
 static IBuffer DeriveKeyMaterial(CryptographicKey const& key, KeyDerivationParameters const& parameters, uint32_t const& desiredKeySize);
public static IBuffer DeriveKeyMaterial(CryptographicKey key, KeyDerivationParameters parameters, uint desiredKeySize);
function deriveKeyMaterial(key, parameters, desiredKeySize)
Public Shared Function DeriveKeyMaterial (key As CryptographicKey, parameters As KeyDerivationParameters, desiredKeySize As UInteger) As IBuffer

Parâmetros

key
CryptographicKey

A chave simétrica ou secreta usada para derivação.

parameters
KeyDerivationParameters

Parâmetros de derivação. Os parâmetros variam dependendo do tipo de algoritmo KDF usado.

desiredKeySize
UInt32

unsigned int

uint32_t

Tamanho solicitado, em bytes, da chave derivada.

Retornos

Buffer que contém a chave derivada.

Exemplos

public String SampleDeriveFromPbkdf(
    String strAlgName,
    UInt32 targetSize)
{
    // Open the specified algorithm.
    KeyDerivationAlgorithmProvider objKdfProv = KeyDerivationAlgorithmProvider.OpenAlgorithm(strAlgName);

    // Create a buffer that contains the secret used during derivation.
    String strSecret = "MyPassword";
    IBuffer buffSecret = CryptographicBuffer.ConvertStringToBinary(strSecret, BinaryStringEncoding.Utf8);

    // Create a random salt value.
    IBuffer buffSalt = CryptographicBuffer.GenerateRandom(32);

    // Specify the number of iterations to be used during derivation.
    UInt32 iterationCount = 10000;

    // Create the derivation parameters.
    KeyDerivationParameters pbkdf2Params = KeyDerivationParameters.BuildForPbkdf2(buffSalt, iterationCount);

    // 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,
        pbkdf2Params,
        targetSize);

    // Encode the key to a hexadecimal value (for display)
    String strKeyHex = CryptographicBuffer.EncodeToHexString(keyDerived);

    // Return the encoded string
    return strKeyHex;
}

Comentários

Derivar chaves requer que você use as classes KeyDerivationAlgorithmProvider e KeyDerivationParameters . As seguintes funções de derivação de chave podem ser usadas:

Para obter um exemplo completo que contém o exemplo de código a seguir, consulte a classe KeyDerivationAlgorithmProvider .

Aplica-se a

Confira também