التشفير في C# (.NET): التشفير والتجزئة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التشفير في C# (.NET): التشفير والتجزئة



أمان البيانات هو أحد المهام الرئيسية في التطوير الحديث. توفر منصة .NET مجموعة أدوات قوية ومرنة للحماية التشفيرية في مساحة الأسماء System.Security.Cryptography. في هذه المقالة، سنشرح بالتفصيل الإمكانيات الأساسية للتشفير في C#: التشفير المتماثل وغير المتماثل، بالإضافة إلى تجزئة البيانات. ستكون المادة مفيدة لكل من المطورين المبتدئين وذوي الخبرة الذين يرغبون في تنظيم معرفتهم.



1. مساحات الأسماء والفئات الرئيسية



تتركز جميع وظائف التشفير في التجميعة System.Security.Cryptography. الفئات الرئيسية:

  • Aes، DES، TripleDES — خوارزميات متماثلة؛
  • RSA، ECDsa، ECDiffieHellman — خوارزميات غير متماثلة؛
  • SHA256، SHA512، MD5 — خوارزميات التجزئة؛
  • RandomNumberGenerator — مولد أرقام عشوائية آمن تشفيريًا.


هام: استخدم فقط الخوارزميات الحديثة. تعتبر MD5 و SHA1 قديمة وغير آمنة للأغراض التشفيرية.



2. التشفير المتماثل (AES)



يستخدم التشفير المتماثل نفس المفتاح للتشفير وفك التشفير. الخوارزمية الأكثر شيوعًا هي AES (معيار التشفير المتقدم). دعنا نلقي نظرة على مثال لتشفير سلسلة نصية.



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

public class AesEncryption{ 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(); } } } } }}


لتوليد مفتاح آمن ومتجه تهيئة (IV)، استخدم RandomNumberGenerator:



using System.Security.Cryptography;

byte[] key = new byte[32]; // 256 بتbyte[] iv = new byte[16]; // 128 بتusing (RandomNumberGenerator rng = RandomNumberGenerator.Create()){ rng.GetBytes(key); rng.GetBytes(iv);}


3. التشفير غير المتماثل (RSA)



يستخدم التشفير غير المتماثل زوجًا من المفاتيح: مفتاح عام (public) ومفتاح خاص (private). RSA هي خوارزمية كلاسيكية مناسبة لتشفير كميات صغيرة من البيانات (عادةً حتى 190 بايت لمفتاح 2048 بت). مثال:



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

public class RsaEncryption{ public static (byte[]

توصيات