Freigeben über


CryptographicEngine.EncryptAndAuthenticate Methode

Definition

Führt eine authentifizierte Verschlüsselung aus.

public:
 static EncryptedAndAuthenticatedData ^ EncryptAndAuthenticate(CryptographicKey ^ key, IBuffer ^ data, IBuffer ^ nonce, IBuffer ^ authenticatedData);
 static EncryptedAndAuthenticatedData EncryptAndAuthenticate(CryptographicKey const& key, IBuffer const& data, IBuffer const& nonce, IBuffer const& authenticatedData);
public static EncryptedAndAuthenticatedData EncryptAndAuthenticate(CryptographicKey key, IBuffer data, IBuffer nonce, IBuffer authenticatedData);
function encryptAndAuthenticate(key, data, nonce, authenticatedData)
Public Shared Function EncryptAndAuthenticate (key As CryptographicKey, data As IBuffer, nonce As IBuffer, authenticatedData As IBuffer) As EncryptedAndAuthenticatedData

Parameter

key
CryptographicKey

Symmetrischer Schlüssel, der für die Verschlüsselung verwendet werden soll.

data
IBuffer

Zu verschlüsselnde und authentifizierte Daten.

nonce
IBuffer

Zu verwendende Nonce. Eine Nonce ist eine Variable mit minimaler Wiederholungswahrscheinlichkeit. Sie können beispielsweise einen zufälligen Wert verwenden, der für jede Verwendung neu generiert wird, einen Zeitstempel, eine Sequenznummer oder eine Kombination aus diesen. Die Microsoft GCM-Implementierung erfordert eine 12-Byte-Nonce. Die CCM-Implementierung erfordert eine Nonce von 7 bis 13 Byte.

authenticatedData
IBuffer

Authentifizierte Daten. Dies kann NULL sein.

Gibt zurück

Die verschlüsselten und authentifizierten Daten. Wenn die Methode fehlschlägt, schlägt die Authentifizierung fehl. wenn die Methode erfolgreich ist, war auch die Authentifizierung erfolgreich.

Beispiele

public void AuthenticatedDecryption(
    String strAlgName,
    CryptographicKey key,
    EncryptedAndAuthenticatedData objEncrypted,
    BinaryStringEncoding encoding,
    IBuffer buffNonce)
{
    // Declare a buffer to contain the decrypted data.
    IBuffer buffDecrypted;

    // Open a SymmetricKeyAlgorithmProvider object for the specified algorithm.
    SymmetricKeyAlgorithmProvider objAlgProv = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAlgName);

    // The input key must be securely shared between the sender of the encrypted message
    // and the recipient. The nonce must also be shared but does not need to be shared
    // in a secure manner. If the sender encodes the message string to a buffer, the
    // binary encoding method must also be shared with the recipient.
    // The recipient uses the DecryptAndAuthenticate() method as follows to decrypt the 
    // message, authenticate it, and verify that it has not been altered in transit.
    buffDecrypted = CryptographicEngine.DecryptAndAuthenticate(
        key,
        objEncrypted.EncryptedData,
        buffNonce,
        objEncrypted.AuthenticationTag,
        null);

    // Convert the decrypted buffer to a string (for display). If the sender created the
    // original message buffer from a string, the sender must tell the recipient what 
    // BinaryStringEncoding value was used. Here, BinaryStringEncoding.Utf8 is used to
    // convert the message to a buffer before encryption and to convert the decrypted
    // buffer back to the original plaintext.
    String strDecrypted = CryptographicBuffer.ConvertBinaryToString(encoding, buffDecrypted);

}

Hinweise

Die authentifizierte Verschlüsselung verschlüsselt und authentifiziert Inhalte in einem Vorgang. Ein Authentifikator, auch als Tag bezeichnet, wird während der Verschlüsselung verwendet, und die Ausgabe des Prozesses enthält ein Tag-Chiffretext-Paar. Weitere Informationen finden Sie in den Eigenschaften AuthenticationTag und EncryptedData . Der Entschlüsselungsprozess überprüft den Verschlüsselungstext mit dem Tag.

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

Gilt für:

Weitere Informationen