Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Criptografia AES com C#

    Criptografia AES com C#

    Jhonathan SoaresBy Jhonathan Soares4 de setembro de 20181 Min Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link
    O .NET fornece classes de alto nível para vários algoritmos de criptografia, tanto simétricos quanto assimétricos. O Advanced Encryption Standard (AES) é um dos algoritmos de criptografia simétrica que permite que ambas as partes, emissor e receptor, usem a mesma chave para criptografar e descriptografar dados.
    AES foi desenvolvido por dois criptógrafos belgas, Vincent Rijmen e Jan Daemen. Em 2001, a AES foi selecionada como padrão para criptografia pelo Instituto Nacional de Padrões e Tecnologia (NIST) dos EUA. O AES suporta tamanhos de chave de 128, 192 e 256 bits e tamanho de bloco de 128 bits.
    AesManaged class é uma implementação gerenciada do algoritmo AES. Hoje vou mostrar como usar a classe AesManaged para aplicar um algoritmo AES para criptografar e descriptografar dados em .NET e C #.
    As etapas a seguir são necessárias para criptografar dados usando AesManaged:
    // 1 - criar a instancia 
    AesManaged aes = new AesManaged(); 
    
    // 2 - criar o encriptor com sua chave personalizada
    ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);  
    
    // 3- utilzar o memory stream
    MemoryStream ms = new MemoryStream();  
    
    
    //utilizar a criptografia dentro do memory stream
    using(CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))   
    {  
        using(StreamWriter sw = new StreamWriter(cs))  
        sw.Write(plainText);  
        encrypted = ms.ToArray();  
    }  
    
    
    
    
    Veja agora uma utilização de um console completo:
        using System;  
        using System.IO;  
        using System.Security.Cryptography;  
        class ManagedAesSample {  
            public static void Main() {  
                Console.WriteLine("Enter text that needs to be encrypted..");  
                string data = Console.ReadLine();  
                EncryptAesManaged(data);  
                Console.ReadLine();  
            }  
            static void EncryptAesManaged(string raw) {  
                try {  
                    // Create Aes that generates a new key and initialization vector (IV).    
                    // Same key must be used in encryption and decryption    
                    using(AesManaged aes = new AesManaged()) {  
                        // Encrypt string    
                        byte[] encrypted = Encrypt(raw, aes.Key, aes.IV);  
                        // Print encrypted string    
                        Console.WriteLine($ "Encrypted data: {System.Text.Encoding.UTF8.GetString(encrypted)}");  
                        // Decrypt the bytes to a string.    
                        string decrypted = Decrypt(encrypted, aes.Key, aes.IV);  
                        // Print decrypted string. It should be same as raw data    
                        Console.WriteLine($ "Decrypted data: {decrypted}");  
                    }  
                } catch (Exception exp) {  
                    Console.WriteLine(exp.Message);  
                }  
                Console.ReadKey();  
            }  
            static byte[] Encrypt(string plainText, byte[] Key, byte[] IV) {  
                byte[] encrypted;  
                // Create a new AesManaged.    
                using(AesManaged aes = new AesManaged()) {  
                    // Create encryptor    
                    ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);  
                    // Create MemoryStream    
                    using(MemoryStream ms = new MemoryStream()) {  
                        // Create crypto stream using the CryptoStream class. This class is the key to encryption    
                        // and encrypts and decrypts data from any given stream. In this case, we will pass a memory stream    
                        // to encrypt    
                        using(CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) {  
                            // Create StreamWriter and write data to a stream    
                            using(StreamWriter sw = new StreamWriter(cs))  
                            sw.Write(plainText);  
                            encrypted = ms.ToArray();  
                        }  
                    }  
                }  
                // Return encrypted data    
                return encrypted;  
            }  
            static string Decrypt(byte[] cipherText, byte[] Key, byte[] IV) {  
                string plaintext = null;  
                // Create AesManaged    
                using(AesManaged aes = new AesManaged()) {  
                    // Create a decryptor    
                    ICryptoTransform decryptor = aes.CreateDecryptor(Key, IV);  
                    // Create the streams used for decryption.    
                    using(MemoryStream ms = new MemoryStream(cipherText)) {  
                        // Create crypto stream    
                        using(CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) {  
                            // Read crypto stream    
                            using(StreamReader reader = new StreamReader(cs))  
                            plaintext = reader.ReadToEnd();  
                        }  
                    }  
                }  
                return plaintext;  
            }  
        }  
    
    Um grande abraço!
    Referências:
    • https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
    • https://docs.microsoft.com
    • https://www.c-sharpcorner.com/members/mahesh-chan

     

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile