Hàm mã hóa và giải mã trong C#

Hàm mã hóa và giải mã trong C# rất quan trọng để bảo mật nội dung khi làm ứng dụng phần mềm bằng C#

Hàm mã hóa và giải mã trong C# rất quan trọng để bảo mật nội dung khi làm ứng dụng phần mềm bằng C#

  1. Bản chất của mã hóa và giải mã trong lập trình
  2. Hàm mã hóa Encrypt trong c#
  3. Hàm giải mã Decrypt trong c#
  4. Ví dụ mã hóa và giải mã bằng C#
  5. Ứng dụng mã hóa và giải mã vào đâu trong lập trình



 

1. Bản chất của mã hóa và giải mã trong lập trình

Mình ví dụ như sau bạn nói với một anh A, nhưng chị B nghe, nhưng muốn chị không hiểu.

Nội dung là: abc (chị B nghe được abc) nhưng chị B ko hiểu thì làm sao

Vậy mình cần quy ước với anh A là a đổi thành 1 , b đổi thành 2, c đổi thành 3 vậy khi nói với a A là abc thì nói là 123.

Việc mã hóa và giải mã trong C# cũng tương tự vậy.

Để sử dụng được mã hóa và giải mã thì bạn hãy using namespace System.Security.Cryptography vào project.

2. Hàm mã hóa Encrypt:

public string Encrypt(string toEncrypt, bool useHashing)
        {
            byte[] keyArray;
            byte[] toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt);
            if (useHashing)
            {
                var hashmd5 = new MD5CryptoServiceProvider();
                keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes("iif"));
            }
            else keyArray = Encoding.UTF8.GetBytes("iif");
            var tdes = new TripleDESCryptoServiceProvider
                           {
                               Key = keyArray,
                               Mode = CipherMode.ECB,
                               Padding = PaddingMode.PKCS7
                           };
            ICryptoTransform cTransform = tdes.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }

Bạn chú ý đoạn sau: GetBytes("iif") thì iif là từ khóa để mã hóa,

Ví dụ : nội dung là abc thì nếu iif thì mã hóa ra là FACCCC
                                          nếu thichiif thì mã hóa ra là GFGFDFDFFFF

Chú ý: Bên dưới hàm giải mã cũng phải đúng khi từ mã lúc mã hóa, nếu chọn từ khác sẽ không giải mã ra được.

3. Hàm giải mã Decrypt


public string Decrypt(string toDecrypt, bool useHashing)
        {
            byte[] keyArray;
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
            if (useHashing)
            {
                var hashmd5 = new MD5CryptoServiceProvider();
                keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes("iif"));
            }
            else keyArray = Encoding.UTF8.GetBytes("iif");
            var tdes = new TripleDESCryptoServiceProvider
                           {
                               Key = keyArray,
                               Mode = CipherMode.ECB,
                               Padding = PaddingMode.PKCS7
                           };
            ICryptoTransform cTransform = tdes.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Encoding.UTF8.GetString(resultArray);
        }

 

4. Ví dụ hàm mã hóa và giải mã trong C#:

 

static void Main(string[] args)
        {
            string noidung = "toi la iif";
            string noidung_khimahoa = Encrypt(noidung,true);
            Console.WriteLine("noidung: Truoc ma hoa: {0}", noidung);
            Console.WriteLine("noidung: Sau ma hoa: {0}", noidung_khimahoa);
            //
            Console.WriteLine("Giai ma la bien noidung_khimahoa: {0}", Decrypt(noidung_khimahoa,true));
            Console.Read();
        }
       Bạn copy 2 hàm phía trên xuống và thêm từ khóa static sau public

 

5. Ứng dụng mã hóa và giải mã vào đâu trong lập trình:

Trong một phần mềm ứng dụng thường có những đoạn text vì dụ như user, pass, hay là 1 đoạn kết nối SQL Server. nếu không mã hóa các đoạn này thì dễ bị người khác thấy và ứng dụng rất dễ bị hacker tấn công.

Mời bạn xem video ứng dụng thực tế việc mã hóa khi làm phần mềm

 [Xem video ứng dụng mã hóa và giải mã trong làm phần mềm thực tế]

Hàm mã hóa và giải mã trong C# rất quan trọng để bảo mật nội dung khi làm ứng dụng phần mềm bằng C#