Cryptographie en C# (.NET) : chiffrement et hachage

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Cryptographie en C# (.NET) : chiffrement et hachage



La sécurité des données est l'un des aspects clés du développement moderne. La plateforme .NET offre un ensemble d'outils puissant et flexible pour la protection cryptographique des informations dans l'espace de noms System.Security.Cryptography. Dans cet article, nous examinerons les principales fonctionnalités de la cryptographie en C# (.NET) : le chiffrement symétrique et asymétrique, le hachage de mots de passe et la création de signatures numériques.



1. Chiffrement symétrique (AES)



Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer les données. L'algorithme le plus courant est AES (Advanced Encryption Standard). Dans .NET, il est implémenté par la classe Aes.



Exemple de chiffrement et déchiffrement d'une chaîne avec 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. Chiffrement asymétrique (RSA)



Le chiffrement asymétrique utilise une paire de clés : une clé publique (public key) pour le chiffrement et une clé privée (private key) pour le déchiffrement. Dans .NET, ce mécanisme est implémenté par la classe RSA. RSA est souvent utilisé pour la transmission sécurisée de clés symétriques.



Exemple de génération de clés et de chiffrement avec RSA :



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

public class RsaExample{ public static void RsaEncryptDecrypt() { using (RSA rsa = RSA.Create()) { // Génération des clés (2048 bits) RSAParameters publicKey = rsa.ExportParameters(false); // uniquement la clé publique RSAParameters privateKey = rsa.ExportParameters(true); // les deux clés

string original = "Message secret pour RSA";

// Chiffrement avec la clé publique byte[] encryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes(original), RSAEncryptionPadding.OaepSHA256);

// Déchiffrement avec la clé privée byte[] decryptedData = rsa.Decrypt(encryptedData, RSAEncryptionPadding.OaepSHA256); string decrypted = Encoding.UTF8.GetString(decryptedData);

Console.WriteLine($"Original : {original}"); Console.WriteLine($"Déchiffré : {decrypted}"); } }}


3. Hachage de données (SHA-256, MD5)



Le hachage

Recommendations