CryptographicEngine.EncryptAndAuthenticate | encryptAndAuthenticate Method

Führt authentifizierte Verschlüsselung aus.

Syntax


var encryptedAndAuthenticatedData = Windows.Security.Cryptography.Core.CryptographicEngine.encryptAndAuthenticate(key, data, nonce, authenticatedData);

Parameter

key

Typ: CryptographicKey

Symmetrischer Schlüssel, der zur Verschlüsselung verwendet werden soll.

data

Typ: IBuffer

Zu verschlüsselnde und zu authentifizierende Daten.

nonce

Typ: IBuffer

Der zu verwendende Nonce. Nonce ist eine Variable, die eine geringe Wiederholungswahrscheinlichkeit hat. Beispielsweise kann ein zufälliger Wert, der für jede Verwendung neu generiert wird, ein Zeitstempel, eine Sequenznummer oder eine Kombination davon verwendet werden. Die Microsoft GCM-Implementierung erfordert eine Nonce mit 12 Bytes. Die CCM-Implementierung erfordert eine Nonce mit 7 bis 13 Byte.

authenticatedData

Typ: IBuffer

Authentifizierte Daten. Dieser Wert kann Null sein.

Rückgabewert

Typ: EncryptedAndAuthenticatedData

Die verschlüsselten und authentifizierten Daten.

Beim Fehlschlagen der Methode schlägt auch die Authentifizierung fehl. Ist die Methode erfolgreich, dann ist auch die Authentifizierung erfolgreich.

Hinweise

Authentifizierte Verschlüsselung verschlüsselt und authentifiziert Inhalt in einem Vorgang. Ein Authentifizierer, auch Tag genannt, wird bei der Verschlüsselung verwendet, und die Ausgabe des Prozesses enthält ein Paar Tag/verschlüsselter Text. Weitere Informationen finden Sie unter den Eigenschaften AuthenticationTag und EncryptedData. Der Entschlüsselungsprozess überprüft den verschlüsseln Text für das Tag.

Sie können einen authentifizierten Verschlüsselungsalgorithmus verwenden, nachdem Sie die OpenAlgorithm-Methode in der SymmetricKeyAlgorithmProvider-Klasse aufgerufen und den Namen des zu öffnenden Algorithmus angegeben haben. Die folgenden Algorithmusnamen werden für authentifizierte Verschlüsselung und Entschlüsselung unterstützt:

Ein vollständiges Beispiel, das folgendes Codebeispiel enthält, finden Sie in der Klasse EncryptedAndAuthenticatedData.

Beispiele


public EncryptedAndAuthenticatedData AuthenticatedEncryption(
    String strMsg,
    String strAlgName,
    UInt32 keyLength,
    out BinaryStringEncoding encoding,
    out IBuffer buffNonce,
    out CryptographicKey key)
{
    // Open a SymmetricKeyAlgorithmProvider object for the specified algorithm.
    SymmetricKeyAlgorithmProvider objAlgProv = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAlgName);

    // Create a buffer that contains the data to be encrypted.
    encoding = BinaryStringEncoding.Utf8;
    IBuffer buffMsg = CryptographicBuffer.ConvertStringToBinary(strMsg, encoding);

    // Generate a symmetric key.
    IBuffer keyMaterial = CryptographicBuffer.GenerateRandom(keyLength);
    key = objAlgProv.CreateSymmetricKey(keyMaterial);

    // Generate a new nonce value.
    buffNonce = GetNonce();

    // Encrypt and authenticate the message.
    EncryptedAndAuthenticatedData objEncrypted = CryptographicEngine.EncryptAndAuthenticate(
        key,
        buffMsg,
        buffNonce,
        null);

    return objEncrypted;

}

IBuffer GetNonce()
{
    // Security best practises require that an ecryption operation not
    // be called more than once with the same nonce for the same key.
    // A nonce value can be predictable, but must be unique for each
    // secure session.

    NonceBytes[0]++;
    for (int i = 0; i < NonceBytes.Length - 1; i++)
    {
        if (NonceBytes[i] == 255)
        {
            NonceBytes[i + 1]++;
        }
    }

    return CryptographicBuffer.CreateFromByteArray(NonceBytes);
}


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

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

Metadaten

Windows.winmd

Siehe auch

CryptographicEngine
EncryptedAndAuthenticatedData
SymmetricKeyAlgorithmProvider

 

 

Anzeigen:
© 2014 Microsoft