Condividi tramite


KeyDerivationParameters.BuildForSP80056a Metodo

Definizione

Crea un oggetto KeyDerivationParameters da usare nella funzione di derivazione della chiave SP800-56A.

public:
 static KeyDerivationParameters ^ BuildForSP80056a(IBuffer ^ algorithmId, IBuffer ^ partyUInfo, IBuffer ^ partyVInfo, IBuffer ^ suppPubInfo, IBuffer ^ suppPrivInfo);
 static KeyDerivationParameters BuildForSP80056a(IBuffer const& algorithmId, IBuffer const& partyUInfo, IBuffer const& partyVInfo, IBuffer const& suppPubInfo, IBuffer const& suppPrivInfo);
public static KeyDerivationParameters BuildForSP80056a(IBuffer algorithmId, IBuffer partyUInfo, IBuffer partyVInfo, IBuffer suppPubInfo, IBuffer suppPrivInfo);
function buildForSP80056a(algorithmId, partyUInfo, partyVInfo, suppPubInfo, suppPrivInfo)
Public Shared Function BuildForSP80056a (algorithmId As IBuffer, partyUInfo As IBuffer, partyVInfo As IBuffer, suppPubInfo As IBuffer, suppPrivInfo As IBuffer) As KeyDerivationParameters

Parametri

algorithmId
IBuffer

Specifica lo scopo previsto della chiave derivata.

partyUInfo
IBuffer

Contiene informazioni pubbliche fornite dall'iniziatore.

partyVInfo
IBuffer

Contiene informazioni pubbliche fornite dal risponditore.

suppPubInfo
IBuffer

Contiene informazioni pubbliche note sia all'iniziatore che al risponditore.

suppPrivInfo
IBuffer

Contiene informazioni private note sia all'iniziatore che al risponditore, ad esempio un segreto condiviso.

Restituisce

Fa riferimento ai parametri usati durante la derivazione della chiave.

Esempio

public void SampleDeriveFromSP80056a()
{
    // Create a string that contains the algorithm name.
    String strAlgName = KeyDerivationAlgorithmNames.Sp80056aConcatSha512;

    // 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 secret to be used during derivation.
    IBuffer buffSecret = CryptographicBuffer.GenerateRandom(32);

    // Create a buffer that contains the intended purpose of the derived key.
    String strAlgId = "Purpose";
    IBuffer buffAlgId = CryptographicBuffer.ConvertStringToBinary(strAlgId, BinaryStringEncoding.Utf8);

    // Create a buffer that contains public information contributed by the initiator.
    String strPartyUInfo = "Initiator public info";
    IBuffer buffPartyUInfo = CryptographicBuffer.ConvertStringToBinary(strPartyUInfo, BinaryStringEncoding.Utf8);

    // Create a buffer that contains public information contributed by the responder.
    String strPartyVInfo = "Responder public info";
    IBuffer buffPartyVInfo = CryptographicBuffer.ConvertStringToBinary(strPartyVInfo, BinaryStringEncoding.Utf8);

    // Create a buffer that contains public information known to both parties.
    String strSuppPubInfo = "Two party public info";
    IBuffer buffSuppPubInfo = CryptographicBuffer.ConvertStringToBinary(strSuppPubInfo, BinaryStringEncoding.Utf8);

    // Create a buffer that contains a shared private secret.
    IBuffer buffSuppPrivInfo = CryptographicBuffer.GenerateRandom(32);

    // Create the derivation parameters.
    KeyDerivationParameters kdf80056AParamsEx = KeyDerivationParameters.BuildForSP80056a(
        buffAlgId,
        buffPartyUInfo,
        buffPartyVInfo,
        buffSuppPubInfo,
        buffSuppPrivInfo);

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

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

Commenti

È possibile usare i nomi degli algoritmi seguenti con la funzione OpenAlgorithm per aprire un provider di algoritmi SP80056a KDF:

Si applica a