NEWS

Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES

Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES
Đăng bởi: Thảo Meo - Lượt xem: 29951 10:16:22, 09/02/2017VB.NET   In bài viết

Bài viết hôm nay, mình xin hướng dẫn các bạn cách mã hóa và giải mã sử dụng thuật toán AES.

Vậy thuật toán AES là gì? 

Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES. Rijndael được phát âm là "Rhine dahl" theo phiên âm quốc tế. Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen. 

Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm. AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. 

Lưu ý: thuật toán mã hóa hóa AES là thuật toán 2 chiều (có thể dịch ngược).

Ở bài viết này, mình sử dụng thuật toán này để mã hóa hóa file.

Demo ứng dụng:

Mã hóa và giải mã thuật toán AES

Source code chương trình:

Viết hàm mã hóa Encrypt AES

Public Function AES_Encrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim encrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
            Dim Buffer As Byte() = System.Text.ASCIIEncoding.UTF8.GetBytes(input)
            encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return encrypted
        Catch ex As Exception
        End Try
End Function

- Tiếp tục, viết hàm giải mã 

Public Function AES_Decrypt(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim decrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
            Dim Buffer As Byte() = Convert.FromBase64String(input)
            decrypted = System.Text.ASCIIEncoding.UTF8.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return decrypted
        Catch ex As Exception
        End Try
End Function

- Viết sự kiện cho button mã hóa

Private Sub btnEncrypt_Click(sender As Object, e As EventArgs) Handles btnEncrypt.Click
        txtEncrypt.Text = AES_Encrypt(txtinput.Text, txtKey.Text)
End Sub

- Tiếp tục, viết sự kiện cho button giải mã

Private Sub btnDecrypt_Click(sender As Object, e As EventArgs) Handles btnDecrypt.Click
        txtDecrypt.Text = AES_Decrypt(txtEncrypt.Text, txtKey.Text)
End Sub

CHÚC CÁC BẠN THÀNH CÔNG

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES
Đăng bởi: Thảo Meo - Lượt xem: 29951 10:16:22, 09/02/2017VB.NET   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp