Поделиться через


CryptographicEngine.DeriveKeyMaterial Метод

Определение

Наследует ключ от другого ключа с помощью функции производного ключа. Дополнительные сведения см. в разделах Классы KeyDerivationAlgorithmProvider и 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

Параметры

key
CryptographicKey

Симметричный или секретный ключ, используемый для наследования.

parameters
KeyDerivationParameters

Параметры производной функции. Параметры зависят от типа используемого алгоритма KDF.

desiredKeySize
UInt32

unsigned int

uint32_t

Запрошенный размер производного ключа (в байтах).

Возвращаемое значение

Буфер, содержащий производный ключ.

Примеры

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;
}

Комментарии

Для наследования ключей необходимо использовать классы KeyDerivationAlgorithmProvider и KeyDerivationParameters . Можно использовать следующие функции наследования ключей:

Полный пример, содержащий следующий пример кода, см. в разделе Класс KeyDerivationAlgorithmProvider .

Применяется к

См. также раздел