Mã Hóa Và Giải Mã MD5 Trong VB.NET | Blog Của BÙI QUANG HIỂN

Trong nhiều chương trình, người lập trình thường sử dụng các hàm mã hóa để mã hóa mật khẩu hoặc mã hóa các thông tin không muốn người khác đọc được. Dưới đây xin được giới thiệu đến các bạn cách mã hóa và giải mã theo dạng MD5 (hàm này có sẵn trong PHP) trong VB.NET

MÃ HÓA

Trước tiên bạn cần IMPORT 2 thư viện này vào đã

Imports System.Text Imports System.Security.Cryptography

Public Function MD5(ByVal chuoi_nguon As String) As String ‘Tạo đối tượng mã hóa dạng ASCII để mã hóa chuỗi ký tự Dim ASCIIenc As New ASCIIEncoding Dim strReturn As String ‘Lấy mảng byte của nguồn văn bản Dim ByteSourceText() As Byte = ASCIIenc.GetBytes(chuoi_nguon) ‘Cài đặt chuẩn mã hóa MD5 Dim Md5Hash As New MD5CryptoServiceProvider ‘Tính giá trị bảng mã của nguồn văn bản Dim ByteHash() As Byte = Md5Hash.ComputeHash(ByteSourceText) ‘Tạo vòng lặp để chuyển đổi bảng mã sang một chuỗi văn bản For Each b As Byte In ByteHash ‘Chuyển các byte sang dạng chuỗi strReturn &= b.ToString(“x2”) Next ‘Trả lại hàm Return strReturn

End Function

GIẢI MÃ

Dưới đây là 1 lớp giải mã Giải thuật mã hóa MD5, được viết bằng VB.NET các bạn viết bằng ASP.NET hoàn toàn sử dụng tốt mã nguồn này.

Trước tiên bạn cần Import thư viện này vào trước Lớp của bạn:

Import System.Security.Cryptography

Friend Shared Function DecryptPasswordMD5(ByVal cipherText As String, ByVal p_strSaltValue As String) As String

Dim strReturn As String = String.Empty

‘Chuyển đổi chuỗi mã hóa xác định đặc điểm chính vào byte _ giả sử mã chúng ta chứa các ký tự thuộc bảng mã ASCII, ngoài ra chúng cũng hỗ trợ về các mã Unicode. Try Dim initVectorBytes As Byte() initVectorBytes = System.Text.Encoding.ASCII.GetBytes(m_strInitVector)

Dim saltValueBytes As Byte() saltValueBytes = System.Text.Encoding.ASCII.GetBytes(p_strSaltValue)

‘ Chuyển đổi văn bản mã hóa thành bảng byte Dim cipherTextBytes As Byte() cipherTextBytes = Convert.FromBase64String(cipherText)

‘Lấy mật khảu đã được mã hóa

Dim password As Rfc2898DeriveBytes

password = New Rfc2898DeriveBytes(m_strPassPhrase, _ saltValueBytes, _ m_strPasswordIterations)

‘Giải mã mật khẩu theo các byte, sau đó xác định kích thước file nguồn. Dim keyBytes As Byte() Dim intKeySize As Integer

intKeySize = CType((m_intKeySize / 8), Integer)

keyBytes = password.GetBytes(intKeySize)

Dim symmetricKey As System.Security.Cryptography.RijndaelManaged symmetricKey = New System.Security.Cryptography.RijndaelManaged

Dim decryptor As System.Security.Cryptography.ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes)

‘Xác định bộ nhớ được dùng giải mã Dim memoryStream As System.IO.MemoryStream memoryStream = New System.IO.MemoryStream(cipherTextBytes)

‘Xác định bộ nhớ đã được mã hóa Dim cryptoStream As System.Security.Cryptography.CryptoStream cryptoStream = New System.Security.Cryptography.CryptoStream(memoryStream, _ decryptor, _ System.Security.Cryptography.CryptoStreamMode.Read)

‘Cấp phát bộ nhớ Dim plainTextBytes As Byte() ReDim plainTextBytes(cipherTextBytes.Length)

‘ Bắt đầu giải mã Dim decryptedByteCount As Integer decryptedByteCount = cryptoStream.Read(plainTextBytes, _ 0, _ plainTextBytes.Length)

‘Giải phóng bộ nhớ memoryStream.Close() cryptoStream.Close()

‘Đưa dữ liệu vào chuỗi Dim plainText As String plainText = System.Text.Encoding.UTF8.GetString(plainTextBytes, _ 0, _ decryptedByteCount)

‘Trả về chuỗi đích strReturn = plainText

Catch ex As Exception strReturn = Nothing End Try

Return strReturn

End Function

End Class

Qua ví dụ về cách tạo lớp này bạn hoàn toàn có thể giải mã các định dạng mã hóa theo chuẩn MD5. Nhưng tôi đoán tất nhiên có nhiều khúc mắc về cách sử dụng Lớp dẫn này, rất mong được sự góp ý của các bạn, để tôi dần hoàn thiện hơn về mã nguồn cho thuật toán này. CẢM ƠN CÁC BẠN ĐÃ QUAN TÂM HI VỌNG ĐƯỢC SỰ ĐÓNG GÓP Ý KIẾN CỦA CÁC BẠN!

Chia sẻ:

  • Facebook
  • X
Thích Đang tải...

Có liên quan

Từ khóa » Thư Viện Md5