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 クラスを参照してください。

適用対象

こちらもご覧ください