Criptografia em C# (.NET): criptografia e hash

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Criptografia em C# (.NET): criptografia e hash



A segurança de dados é um dos principais aspectos do desenvolvimento moderno. A plataforma .NET fornece um conjunto poderoso e flexível de ferramentas para proteção criptográfica de informações no namespace System.Security.Cryptography. Neste artigo, abordaremos os principais recursos de criptografia em C# (.NET): criptografia simétrica e assimétrica, hash de senhas e criação de assinaturas digitais.



1. Criptografia simétrica (AES)



A criptografia simétrica usa a mesma chave para criptografar e descriptografar dados. O algoritmo mais comum é o AES (Advanced Encryption Standard). No .NET, ele é implementado pela classe Aes.



Exemplo de criptografia e descriptografia de uma string usando AES:



using System;using System.IO;using System.Security.Cryptography;using System.Text;

public class AesExample{ public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV) { using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV;

ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(plainText); } return msEncrypt.ToArray(); } } } }

public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) { using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV;

ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);

using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { return srDecrypt.ReadToEnd(); } } } } }}


2. Criptografia assimétrica (RSA)



A criptografia assimétrica usa um par de chaves: uma chave pública (public key) para criptografar e uma chave privada (private key) para descriptografar. No .NET, esse mecanismo é implementado pela classe RSA. O RSA é frequentemente usado para a transmissão segura de chaves simétricas.



Exemplo de geração de chaves e criptografia usando RSA:



using System;using System.Security.Cryptography;using System.Text;

public class RsaExample{ public static void RsaEncryptDecrypt() { using (RSA rsa = RSA.Create()) { // Geração de chaves (2048 bits) RSAParameters publicKey = rsa.ExportParameters(false); // apenas chave pública RSAParameters privateKey = rsa.ExportParameters(true); // ambas as chaves

string original = "Mensagem secreta para RSA";

// Criptografia com chave pública byte[] encryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes(original), RSAEncryptionPadding.OaepSHA256);

// Descriptografia com chave privada byte[] decryptedData = rsa.Decrypt(encryptedData, RSAEncryptionPadding.OaepSHA256); string decrypted = Encoding.UTF8.GetString(decryptedData);

Console.WriteLine($"Original: {original}"); Console.WriteLine($"Descriptografado: {decrypted}"); } }}


3. Hash de dados (SHA-256, MD5)



Hash

Recommendations