Comment chiffrer et déchiffrer symétriquement certaines données en C# à l'aide d'AES ?

Bonjour le monde

J'essaie de chiffrer et de déchiffrer certaines données à l'aide d'AES. Mais je n'obtiens qu'une sortie brouillée. Qu'est-ce que je fais mal?

static void Test()
{
    byte[] myFileBytes; // Will contain encrypted data. First the IV, then the ciphertext.
    var myPassword = "helloworld";
    var dataToEncrypt = "this is a test";

    // STEP 1: Encrypt some data:

    byte[] key;

    using (var sha256 = SHA256.Create())
        key = sha256.ComputeHash(Encoding.UTF8.GetBytes(myPassword));

    using (var myFileStream = new MemoryStream())
    using (var aes = System.Security.Cryptography.Aes.Create())
    {
        aes.Key = key;
        myFileStream.Write(aes.IV); // Use the default created by AES, which is presumably non-pseudo random

        using (var cryptoStream = new CryptoStream(myFileStream, aes.CreateEncryptor(), CryptoStreamMode.Write))
        {
            cryptoStream.Write(Encoding.UTF8.GetBytes(dataToEncrypt));
            cryptoStream.Flush();

            myFileBytes = myFileStream.ToArray(); // We are done!

        } // Disposing CryptoStream disposes the underlying MemoryStream
    }

    // STEP 2: Decrypt it to verify that it works

    using (var aes = System.Security.Cryptography.Aes.Create())
    {
        using (var myFileStream = new MemoryStream(myFileBytes))
        {
            var iv = new byte[aes.IV.Length];

            myFileStream.Read(iv, 0, iv.Length);

            using (var cryptoStream = new CryptoStream(myFileStream, aes.CreateEncryptor(key, iv), CryptoStreamMode.Read))
            using (var copyStream = new MemoryStream())
            {
                cryptoStream.CopyTo(copyStream);

                var decrypted = Encoding.UTF8.GetString(copyStream.ToArray());

                Debug.Assert(dataToEncrypt == decrypted); // Fails!
            }
        }
    }
}
Départ

Je regarderais l' exemple dans la documentation et comparerais à votre code.

Notamment lors du décryptage, vous utilisez aes.CreateEncryptor(key, iv). Cela devrait probablement l'être aes.CreateDecryptor(key, iv).

L'exemple de la documentation saisit également la clé et le IV lors de l'appel CreateEncryptor, mais je ne sais pas si cela est requis ou non.

Vous ne devriez probablement pas utiliser sha256 pour générer la clé à partir d'un mot de passe. La bonne méthode serait un algorithme de dérivation de clé . Par exemple Rfc2898DeriveBytes

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Chiffrer et déchiffrer AES

Chiffrer efficacement les fichiers à l'aide d'AES en Java

Chiffrer en java et déchiffrer en C # pour AES 256 bits

Comment chiffrer et déchiffrer une chaîne à l'aide d'AWS KMS?

Chiffrer et déchiffrer à l'aide de certificats dans .NET Core C#

Chiffrer dans le front-end JS et déchiffrer dans le backend python à l'aide d'AES GCM

Chiffrer en PHP, déchiffrer en C

Impossible de déchiffrer les données AES à l'aide d'Obj-C qui ont été chiffrées à l'aide de Java

Comment déchiffrer des données à l'aide de RSACng qui sont précédemment cryptées avec RSACryptoServiceProvider

Comment chiffrer et déchiffrer à l'aide de la clé privée et de la clé publique ECDSA générées dans la structure Hyperledger

Chiffrer dans ColdFusion, déchiffrer en C #

Comment déchiffrer les données à partir du résultat d'une opération de chiffrement IE 11 à l'aide d'AES-GCM

Comment chiffrer et déchiffrer les données d'objets dans Reactjs

Comment chiffrer les colonnes de données dans SQL à l'aide d'Azure Key Vault?

Android KeyStore chiffrer et déchiffrer les données

Comment chiffrer le contenu en utilisant RSA pour Chilkat en C # et le déchiffrer en Java?

Crypter AES dans Terminal et déchiffrer en PHP

Comment déchiffrer par Python pour AES chiffrer par PHP

En utilisant node-jose, comment déchiffrer les données que je viens de chiffrer?

Comment chiffrer avec une clé privée et déchiffrer avec une clé publique en c # RSA

Déchiffrer AES dans l'exemple C++

Comment chiffrer mes données à l'aide de l'API de protection des données d'Apple?

Comment puis-je déchiffrer des données en morceaux en c # en utilisant une clé privée après le chiffrement en PHP à l'aide d'une clé publique?

Comment chiffrer et déchiffrer dans Angular 6

Comment chiffrer et déchiffrer facilement une chaîne en utilisant Tink?

Comment chiffrer et déchiffrer un langage spécifique en python

comment déchiffrer à l'aide de DatatypeConverter MD5 en JAVA ?

Existe-t-il un moyen de chiffrer en java / kotlin et de déchiffrer en nodejs avec AES / CBC?

Comment déchiffrer un texte chiffré dans Go qui est chiffré dans vuejs à l'aide du package aes-js

TOP liste

  1. 1

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  2. 2

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    comment afficher un bouton au-dessus d'un autre élément ?

  7. 7

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  8. 8

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  13. 13

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  14. 14

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  15. 15

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  16. 16

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  17. 17

    Créer un système Buzzer à l'aide de python

  18. 18

    Exporter la table de l'arborescence vers CSV avec mise en forme

  19. 19

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  20. 20

    Conversion double en BigDecimal en Java

  21. 21

    Comment activer le message Pylint "too-many-locals" dans VS Code?

chaudétiquette

Archive