CryptographicEngine.EncryptAndAuthenticate Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Effectue un chiffrement authentifié.
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
Paramètres
- key
- CryptographicKey
Clé symétrique à utiliser pour le chiffrement.
- data
- IBuffer
Données à chiffrer et authentifier.
- nonce
- IBuffer
Nonce à utiliser. Un nonce est une variable qui a un risque minimal de répétition. Par exemple, vous pouvez utiliser une valeur aléatoire qui vient d’être générée pour chaque utilisation, un horodatage, un numéro de séquence ou une combinaison de ceux-ci. L’implémentation de Microsoft GCM nécessite un nonce de 12 octets. L’implémentation CCM nécessite un nonce de 7 à 13 octets.
- authenticatedData
- IBuffer
Données authentifiées. Il peut s’agir de Null.
Retours
Données chiffrées et authentifiées. Si la méthode échoue, l’authentification échoue ; si la méthode réussit, l’authentification a également réussi.
Exemples
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);
}
Remarques
Le chiffrement authentifié chiffre et authentifie le contenu en une seule opération. Un authentificateur, également appelé balise, est utilisé pendant le chiffrement et la sortie du processus contient une paire balise-chiffrementtext. Pour plus d’informations, consultez les propriétés AuthenticationTag et EncryptedData . Le processus de déchiffrement vérifie le texte chiffré par rapport à la balise.
Vous pouvez utiliser un algorithme de chiffrement authentifié après avoir appelé la méthode OpenAlgorithm sur la classe SymmetricKeyAlgorithmProvider et spécifié le nom de l’algorithme à ouvrir. Les noms d’algorithmes suivants sont pris en charge pour le chiffrement et le déchiffrement authentifiés :
- SymmetricAlgorithmNames.AesGcm
- SymmetricAlgorithmNames.AesCcm Pour obtenir un exemple complet contenant l’exemple de code suivant, consultez la classe EncryptedAndAuthenticatedData .