Hướng dẫn mã hóa mật khẩu 1 chiều với MD5 trong C#

Hướng dẫn mã hóa mật khẩu 1 chiều với MD5 trong C#

Mã hóa luôn là vấn đề trọng tâm của việc bảo mật. Kỹ thuật mã hóa liên tục được thay đổi để nhằm ngăn cản sự can thiệp không chính thức. Mã hóa một chiều chính là cách thức dùng để mã hóa mật khẩu. Nó được chọn vì nó không thể được giải mã ngược lại. Tuy nhiên chúng ta cũng không chắc chắn tuyệt đối, mọi thứ đều chỉ là tương đối, nhưng đến thời điểm hiện tại đây vẫn là loại mã hóa mạnh mẽ nhất.

Mã hóa MD5 là gì?

MD5 là một hàm băm dài 128-bit, nó thực hiện việc chuyển một đoạn thông tin thành một chiều dài không đổi 128 bit. Nó thường bao gồm 64 tác vụ được nhóm trong 4 vòng với 16 tác vụ

Một thao tác MD5 - Hình wiki

Một thao tác MD5 – Hình wiki

Ví dụ về một đoạn được băm qua MD5

The quick brown fox jumps over the lazy dog =  9e107d9d372bb6826bd81d3542a419d6

Chỉ một thay đổi nhỏ trên chuỗi cũng sẽ cho một đoạn mã MD5 hoàn toàn khác ví dụ

The quick brown fox jumps over the lazy eog = ffd93f16876049265fbaef4da268dd0e

Có một cách có thể bẻ khóa được đó là Brute force, đây thật ra là một kiểu thử, nó sẽ thử hết tất cả các loại chuỗi để tìm ra chuổi chính xác.

Chiếc máy bẻ khóa này có giá 250.000$ nó có thể bẻ khóa được trong vài ngày với 64 con chip.

Chiếc máy bẻ khóa này có giá 250.000$ nó có thể bẻ khóa được trong vài ngày với 64 con chip.

Sử dụng mã hóa MD5 trong C#

.Net đã có hỗ trợ một lớp MD5 sẵn và bạn chỉ việc sử dụng nó một cách đơn giản. Để sử dụng nó bạn cần using vào một lớp bảo mật đó là System.Security.Cryptography; và đoạn thực hiện mã hóa như sau:

 //Tạo MD5 
 MD5 mh = MD5.Create();
 //Chuyển kiểu chuổi thành kiểu byte
 byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes("Chuỗi cần mã hóa");
 //mã hóa chuỗi đã chuyển
 byte[] hash = mh.ComputeHash(inputBytes);
 //tạo đối tượng StringBuilder (làm việc với kiểu dữ liệu lớn)
 StringBuilder sb = new StringBuilder();

 for (int i = 0; i < hash.Length; i++)
 {
   sb.Append(hash[i].ToString("X2"));
 }
 MessageBox.Show(sb.ToString());
//nếu bạn muốn các chữ cái in thường thay vì in hoa thì bạn thay chữ "X" in hoa 
trong "X2" thành "x"

 

Kết quả của đoạn mã hóa trên

Kết quả của đoạn mã hóa trên

Bạn có thể tạo ra một hàm để truyền tham số vào cho đơn giản để dùng lại dễ dàng hơn.