CryptographicEngine.EncryptAndAuthenticate 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í.
Realiza el cifrado autenticado.
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
Parámetros
- key
- CryptographicKey
Clave simétrica que se va a usar para el cifrado.
- data
- IBuffer
Datos que se van a cifrar y autenticar.
- nonce
- IBuffer
Nonce que se va a usar. Un nonce es una variable que tiene una probabilidad mínima de repetirse. Por ejemplo, puede usar un valor aleatorio que se genera recientemente para cada uso, una marca de tiempo, un número de secuencia o alguna combinación de estos. La implementación de Microsoft GCM requiere un nonce de 12 bytes. La implementación de CCM requiere un nonce de 7 a 13 bytes.
- authenticatedData
- IBuffer
Datos autenticados. Puede ser Null.
Devoluciones
Datos cifrados y autenticados. 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 .