Поделиться через


CryptographicEngine.EncryptAndAuthenticate Метод

Определение

Выполняет шифрование, прошедшее проверку подлинности.

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

Параметры

key
CryptographicKey

Симметричный ключ, используемый для шифрования.

data
IBuffer

Данные для шифрования и проверки подлинности.

nonce
IBuffer

Nonce для использования. Nonce — это переменная с минимальной вероятностью повторения. Например, можно использовать случайное значение, которое создается для каждого использования, метку времени, порядковый номер или некоторое сочетание этих значений. Для реализации Microsoft GCM требуется 12-байтовый nonce. Для реализации CCM требуется от 7 до 13 байтов nonce.

authenticatedData
IBuffer

Данные, прошедшие проверку подлинности. Это может быть значение NULL.

Возвращаемое значение

Зашифрованные и прошедшие проверку подлинности данные. Если метод завершается сбоем, проверка подлинности завершается сбоем; Если метод выполнен успешно, проверка подлинности также выполнена.

Примеры

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

}

Комментарии

Шифрование с проверкой подлинности шифрует и проверяет подлинность содержимого в одной операции. Средство проверки подлинности, также называемое тегом, используется во время шифрования, а выходные данные процесса содержат пару тег-шифротекст. Дополнительные сведения см. в разделах Свойства AuthenticationTag и EncryptedData . Процесс расшифровки проверяет зашифрованный текст по тегу.

Алгоритм шифрования, прошедший проверку подлинности, можно использовать после вызова метода OpenAlgorithm в классе SymmetricKeyAlgorithmProvider и указания имени открываемого алгоритма. Для шифрования и расшифровки с проверкой подлинности поддерживаются следующие имена алгоритмов:

Применяется к

См. также раздел