Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    • A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia
    • Conheça os tipos de registros DNS: o guia completo sobre A, AAAA, NS, CNAME, MX, PTR, SOA, TXT, SRV, SPF e muito mais
    • Cache além do básico: por que LRU e TTL precisam andar juntos
    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
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    Categorias
    • Arquitetura (31)
      • Microsserviços (3)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (93)
      • NoSql (60)
      • Sql (38)
    • Boas práticas (35)
      • Gestão & Produtividade (5)
      • Metodologias Ágeis (6)
    • Cursos (53)
    • Dicas (108)
    • Front-End (92)
    • IA (8)
    • 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

    Código Simples no Facebook
    Código Simples no Facebook
    • Popular
    • Recente

    1000 livros gratuitos sobre programação!

    12 de fevereiro de 2016

    Google lança versão “invisível” do reCAPTCHA!

    10 de março de 2017

    Mini curso de HTML5 oferecido pela Microsoft

    30 de janeiro de 2014

    O que significa ( !important ) na declaração do CSS ?

    5 de fevereiro de 2014

    Programa para supercompactar arquivos. KGB Archiver.

    6 de fevereiro de 2014

    Observabilidade para agentes: por que logs e traces tradicionais já não bastam

    23 de abril de 2026

    Context engineering: quando o problema deixa de ser prompt e vira arquitetura

    16 de abril de 2026

    Clean Code (2ª edição): o que mudou e o que continua valendo

    12 de fevereiro de 2026

    Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha

    4 de fevereiro de 2026

    Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis

    30 de outubro de 2025
    Nosso Feed
    • RSS - Posts
    Fique por dentro

    Digite seu endereço de email para assinar este blog e receber notificações de novas publicações por email.

    Facebook X (Twitter) Instagram LinkedIn

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

    Vá para versão mobile