CryptographicEngine.DecryptAndAuthenticate Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Descifra y autentica los datos. Para obtener más información y un ejemplo de código completo, vea EncryptedAndAuthenticatedData.
public:
static IBuffer ^ DecryptAndAuthenticate(CryptographicKey ^ key, IBuffer ^ data, IBuffer ^ nonce, IBuffer ^ authenticationTag, IBuffer ^ authenticatedData);
static IBuffer DecryptAndAuthenticate(CryptographicKey const& key, IBuffer const& data, IBuffer const& nonce, IBuffer const& authenticationTag, IBuffer const& authenticatedData);
public static IBuffer DecryptAndAuthenticate(CryptographicKey key, IBuffer data, IBuffer nonce, IBuffer authenticationTag, IBuffer authenticatedData);
function decryptAndAuthenticate(key, data, nonce, authenticationTag, authenticatedData)
Public Shared Function DecryptAndAuthenticate (key As CryptographicKey, data As IBuffer, nonce As IBuffer, authenticationTag As IBuffer, authenticatedData As IBuffer) As IBuffer
Parámetros
- key
- CryptographicKey
Clave simétrica que se va a usar.
- data
- IBuffer
Datos que se van a descifrar y autenticar.
- nonce
- IBuffer
Nonce que se va a usar. Debe ser el mismo nonce utilizado por el método EncryptAndAuthenticate .
- authenticationTag
- IBuffer
Etiqueta de autenticación.
- authenticatedData
- IBuffer
Datos autenticados. Puede ser Null.
Devoluciones
Búfer que contiene los datos descifrados. Si se produce un error en el método, se produce un error en la autenticación; si el método se realiza correctamente, la autenticación también se realizó correctamente.
Ejemplos
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);
}
Comentarios
El cifrado autenticado cifra y autentica el contenido en una sola operación. Un autenticador, también denominado etiqueta, se usa durante el cifrado y la salida del proceso contiene un par de texto cifrado de etiquetas. Para obtener más información, consulte las propiedades AuthenticationTag y EncryptedData . El proceso de descifrado comprueba el texto cifrado con la etiqueta .
Puede usar un algoritmo de cifrado autenticado después de llamar al método OpenAlgorithm en la clase SymmetricKeyAlgorithmProvider y especificar el nombre del algoritmo que se va a abrir. Se admiten los siguientes nombres de algoritmo para el cifrado y el descifrado autenticados:
- SymmetricAlgorithmNames.AesGcm
- SymmetricAlgorithmNames.AesCcm Para obtener un ejemplo completo que contiene el siguiente ejemplo de código, vea la clase EncryptedAndAuthenticatedData .