
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
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.
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
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.
