Partager via


CryptographicEngine.Encrypt(CryptographicKey, IBuffer, IBuffer) Méthode

Définition

Chiffre les données à l’aide d’un algorithme symétrique ou asymétrique.

public:
 static IBuffer ^ Encrypt(CryptographicKey ^ key, IBuffer ^ data, IBuffer ^ iv);
 static IBuffer Encrypt(CryptographicKey const& key, IBuffer const& data, IBuffer const& iv);
public static IBuffer Encrypt(CryptographicKey key, IBuffer data, IBuffer iv);
function encrypt(key, data, iv)
Public Shared Function Encrypt (key As CryptographicKey, data As IBuffer, iv As IBuffer) As IBuffer

Paramètres

key
CryptographicKey

Clé de chiffrement à utiliser pour le chiffrement. Il peut s’agir d’une clé asymétrique ou symétrique. Pour plus d’informations, consultez AsymmetricKeyAlgorithmProvider et SymmetricKeyAlgorithmProvider.

data
IBuffer

Données à chiffrer.

iv
IBuffer

Mémoire tampon qui contient le vecteur d’initialisation. Cela peut être null pour un algorithme symétrique et doit toujours être null pour un algorithme asymétrique. Si un vecteur d’initialisation (IV) a été utilisé pour chiffrer les données, vous devez utiliser le même vecteur d’initialisation pour déchiffrer les données. Vous pouvez utiliser la méthode GenerateRandom pour créer un iv qui contient des données aléatoires. D’autres IVs, tels que les vecteurs non générés, nécessitent une implémentation personnalisée. Pour plus d’informations, consultez Clés de chiffrement.

Les algorithmes de mode de chiffrement de blocs de chaînage de blocs (CBC) nécessitent un vecteur d’initialisation. Pour plus d'informations, consultez la section Notes.

Retours

Données chiffrées.

Exemples

public IBuffer SampleCipherEncryption(
    String strMsg,
    String strAlgName,
    UInt32 keyLength,
    out BinaryStringEncoding encoding,
    out IBuffer iv,
    out CryptographicKey key)
{
    // Initialize the initialization vector.
    iv = null;

    // Initialize the binary encoding value.
    encoding = BinaryStringEncoding.Utf8;

    // Create a buffer that contains the encoded message to be encrypted. 
    IBuffer buffMsg = CryptographicBuffer.ConvertStringToBinary(strMsg, encoding);

    // Open a symmetric algorithm provider for the specified algorithm. 
    SymmetricKeyAlgorithmProvider objAlg = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAlgName);

    // Determine whether the message length is a multiple of the block length.
    // This is not necessary for PKCS #7 algorithms which automatically pad the
    // message to an appropriate length.
    if (!strAlgName.Contains("PKCS7"))
    {
        if ((buffMsg.Length % objAlg.BlockLength) != 0)
        {
            throw new Exception("Message buffer length must be multiple of block length.");
        }
    }

    // Create a symmetric key.
    IBuffer keyMaterial = CryptographicBuffer.GenerateRandom(keyLength);
    key = objAlg.CreateSymmetricKey(keyMaterial);

    // CBC algorithms require an initialization vector. Here, a random
    // number is used for the vector.
    if (strAlgName.Contains("CBC"))
    {
        iv = CryptographicBuffer.GenerateRandom(objAlg.BlockLength);
    }

    // Encrypt the data and return.
    IBuffer buffEncrypt = CryptographicEngine.Encrypt(key, buffMsg, iv);
    return buffEncrypt;
}

Remarques

Parmi les algorithmes symétriques pris en charge par Microsoft, les éléments suivants nécessitent un vecteur d’initialisation :

S’applique à

Voir aussi