web-dev-qa-db-fra.com

Exemple C # de chiffrement AES256 à l'aide de System.Security.Cryptography.Aes

Je dois implémenter le cryptage/décryptage AES 256 et je n'ai pas pu trouver d'exemple qui fonctionne correctement.

MSDN suggère que je devrais utiliser la classe AES.

La classe Rijndael est le prédécesseur de l'algorithme Aes. Vous devez utiliser l'algorithme Aes au lieu de Rijndael. Pour plus d'informations, consultez l'entrée Les différences entre Rijndael et AES dans le blog de sécurité .NET.

Quelqu'un pourrait-il m'indiquer un bon exemple en utilisant la classe AES pour AES256?

Pour ajouter un peu plus de clarté:

J'ai un fichier de chiffrement qui contient la clé partagée et une chaîne de texte crypté. J'ai besoin de décrypter le texte puis de le valider.

Tous les exemples que j'ai vus attendent au moins 2 paramètres pour effectuer le cryptage/décryptage.

Dois-je pouvoir déduire le vecteur d'initialisation et la clé du texte dans le fichier de chiffrement?

Voici un exemple du texte contenu dans mon fichier de chiffrement:

ÊÚḠ± Ìrá ƒ @ † ²; Ä; öDWnªóª © © ¨¦L

19
TeamWild

Une fois que j'avais découvert toutes les informations sur la façon dont mon client gérait le chiffrement/déchiffrement à leur fin, c'était simple en utilisant exemple AesManaged suggéré par dtb.

Le code finalement implémenté a commencé comme ceci:

    try
    {
        // Create a new instance of the AesManaged class.  This generates a new key and initialization vector (IV).
        AesManaged myAes = new AesManaged();

        // Override the cipher mode, key and IV
        myAes.Mode = CipherMode.ECB;
        myAes.IV = new byte[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // CRB mode uses an empty IV
        myAes.Key = CipherKey;  // Byte array representing the key
        myAes.Padding = PaddingMode.None;

        // Create a encryption object to perform the stream transform.
        ICryptoTransform encryptor = myAes.CreateEncryptor();

        // TODO: perform the encryption / decryption as required...

    }
    catch (Exception ex)
    {
        // TODO: Log the error 
        throw ex;
    }
2
TeamWild

Peut-être que cet exemple répertorié ici peut vous aider. Déclaration de l'auteur

environ 24 lignes de code à chiffrer, 23 à déchiffrer

8
Dimi Takis