摘要:[C#][VB.Net] AES 加解密
由於 AES 加解密過程中需要兩個位元組陣列: Key 及 IV 而且必須符合規定的大小
因此這兩個資料,我們可以利用 MD5CryptoServiceProvider 或 Rfc2898DeriveBytes 等方式產生雜湊碼
加密 (C#) :
private string enprypt(string plainText, string key)
{
AES = new RijndaelManaged();
MD5 = new MD5CryptoServiceProvider();
byte[] plainTextData = Encoding.Unicode.GetBytes(plainText);
byte[] keyData = MD5.ComputeHash( Encoding.Unicode.GetBytes(key));
byte[] IVData= MD5.ComputeHash(Encoding.Unicode.GetBytes("Alex Lee"));
ICryptoTransform transform = AES.CreateEncryptor(keyData, IVData);
byte[] outputData = transform.TransformFinalBlock(plainTextData, 0, plainTextData.Length);
return Convert.ToBase64String(output);
}
加密 (VB) :
Private Function encrypt(ByVal plainText As String, ByVal key As String) As String
Dim AES As New RijndaelManaged()
Dim MD5 As New MD5CryptoServiceProvider()
Dim plainTextData As Byte() = Encoding.Unicode.GetBytes(plainText)
Dim keyData As Byte() = MD5.ComputeHash(Encoding.Unicode.GetBytes(key))
Dim IVData As Byte() = MD5.ComputeHash(Encoding.Unicode.GetBytes("Alex Lee"))
Dim transform As ICryptoTransform = AES.CreateEncryptor(keyData, IVData)
Dim outputData As Byte() = transform.TransformFinalBlock(plainTextData, 0, plainTextData.Length)
encrypt = Convert.ToBase64String(outputData)
End Function
解密(C#):
private string decrypt(byte[] cipherTextData, string key)
{
AES = new RijndaelManaged();
MD5 = new MD5CryptoServiceProvider();
byte[] keyData = MD5.ComputeHash(Encoding.Unicode.GetBytes(key));
byte[] IVData = MD5.ComputeHash(Encoding.Unicode.GetBytes("Alex Lee"));
ICryptoTransform transform = AES.CreateDecryptor(keyData, IVData);
byte[] outputData = transform.TransformFinalBlock(cipherTextData, 0, cipherTextData.Length);
return Encoding.Unicode.GetString(outputData);
}
解密(VB):
Private Function decrypt(ByVal cipherTextData As Byte(), ByVal key As String) As String
Dim AES As New RijndaelManaged()
Dim MD5 As New MD5CryptoServiceProvider()
Dim keyData As Byte() = MD5.ComputeHash(Encoding.Unicode.GetBytes(key))
Dim IVData As Byte() = MD5.ComputeHash(Encoding.Unicode.GetBytes("Alex Lee"))
Dim transform As ICryptoTransform = AES.CreateDecryptor(keyData, IVData)
Dim outputData As Byte() = transform.TransformFinalBlock(cipherTextData, 0, cipherTextData.Length)
decrypt = Encoding.Unicode.GetString(outputData)
End Function