KeyDerivationAlgorithmProvider Class

キー派生アルゴリズム プロバイダーを表します。

構文


var keyDerivationAlgorithmProvider = Windows.Security.Cryptography.Core.KeyDerivationAlgorithmProvider;

属性

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

メンバー

KeyDerivationAlgorithmProviderクラス には次の種類のメンバーがあります。

メソッド

The KeyDerivationAlgorithmProvider クラス には次のメソッドがあります。 With C#、Visual Basic、および C++ では、以下からもメソッドが継承されます。Object クラス.

メソッド説明
CreateKey Creates a KDF key.
OpenAlgorithm Creates an instance of the KeyDerivationAlgorithmProvider class and opens the specified algorithm for use.

 

プロパティ

KeyDerivationAlgorithmProviderクラス には次のプロパティがあります。

プロパティアクセスの種類説明

AlgorithmName

読み取り専用Gets the name of the open key derivation function (KDF) algorithm.

 

解説

複数の人が秘密の共通キーを共有する場合は、通常、暗号操作で使用するために追加キーを派生する必要があります。また、信頼できるサード パーティが 1 つのマスター キーとは異なる暗号化キーを取得しなければならない場合があります。キー派生関数は、これらの追加キーを派生するために使用されます。

CryptographicEngine クラスの静的 DeriveKeyMaterial メソッドと、キーを派生する KeyDerivationParameters クラスの次のメソッドを使用できます。

メソッド説明

BuildForPbkdf2

パスワード ベースのキー派生関数 2 (PBKDF2) で使用するための KeyDerivationParameters オブジェクトを作成します。

BuildForSP800108

カウンター モードでハッシュ メッセージ認証コード (HMAC: hash-based message authentication code) キー派生関数を使用するために KeyDerivationParameters オブジェクトを作成します。

BuildForSP80056a

SP800-56A キー派生関数で使用するための KeyDerivationParameters オブジェクトを作成します。

 

静的 OpenAlgorithm メソッドを呼び出して、KeyDerivationAlgorithmProvider オブジェクトを作成します。



using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;

namespace SampleKeyDerivationAlgorithm
{
    sealed partial class SampleKeyDerivationProviderApp : Application
    {
        public SampleKeyDerivationProviderApp()
        {
            // Initialize the Application.
            this.InitializeComponent();

            // Derive key material from a password-based key derivation function.
            String strKdfAlgName = KeyDerivationAlgorithmNames.Pbkdf2Sha256;
            UInt32 targetKeySize = 32;
            UInt32 iterationCount = 10000;
            IBuffer buffKeyMatl = this.SampleDeriveKeyMaterialPbkdf(
                strKdfAlgName,
                targetKeySize,
                iterationCount);

            // Create a key.
            CryptographicKey key = this.SampleCreateKDFKey(
                strKdfAlgName,
                buffKeyMatl);
        }

        public IBuffer SampleDeriveKeyMaterialPbkdf(
            String strAlgName,
            UInt32 targetKeySize,
            UInt32 iterationCount)
        {

            // Open the specified algorithm.
            KeyDerivationAlgorithmProvider objKdfProv = KeyDerivationAlgorithmProvider.OpenAlgorithm(strAlgName);

            // Demonstrate how to retrieve the algorithm name.
            String strAlgUsed = objKdfProv.AlgorithmName;

            // 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);

            // 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 keyMaterial = CryptographicEngine.DeriveKeyMaterial(
                keyOriginal,
                pbkdf2Params,
                targetKeySize);

            // Demonstrate checking the iteration count.
            UInt32 iterationCountOut = pbkdf2Params.IterationCount;

            // Demonstrate returning the derivation parameters to a buffer.
            IBuffer buffParams = pbkdf2Params.KdfGenericBinary;

            // return the KDF key material.
            return keyMaterial;
        }

        public CryptographicKey SampleCreateKDFKey(
            String strAlgName,
            IBuffer buffKeyMaterial)
        {
            // Create a KeyDerivationAlgorithmProvider object and open the specified algorithm.
            KeyDerivationAlgorithmProvider objKdfAlgProv = KeyDerivationAlgorithmProvider.OpenAlgorithm(strAlgName);

            // Create a key by using the KDF parameters.
            CryptographicKey key = objKdfAlgProv.CreateKey(buffKeyMaterial);

            return key;
        }
    }
}


要件

最小限サポートされるクライアント

Windows 8 [Windows ストア アプリ, デスクトップ アプリ]

最小限サポートされるサーバー

Windows Server 2012 [Windows ストア アプリ, デスクトップ アプリ]

名前空間

Windows.Security.Cryptography.Core
Windows::Security::Cryptography::Core [C++]

メタデータ

Windows.winmd

参照

CryptographicEngine
KeyDerivationParameters

 

 

表示:
© 2014 Microsoft