考慮到網上的VB.NET實現AES加密基本上找不到參考代碼,所以我花了10個小時查閱資料以及測試得到了以下的實用代碼。
供大家參考,我參考了以下網頁:
http://www.cnblogs.com/MythXin/archive/2011/08/03/2126069.html |
http://blog.sina.com.cn/s/blog_6570618601012ilz.html |
http://bbs.csdn.net/topics/120022863 |
代碼(不含解釋,因爲有些具體的地方,我自己也不是很清楚):
Public Class SecurityCenter
''' <summary>
''' 加密文本爲Base64編碼
''' </summary>
''' <param name="Source"></param>
''' <param name="Key"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function EncriptStr(ByVal Source As String, ByVal Key As String) As String
Dim encripter As System.Security.Cryptography.Aes = System.Security.Cryptography.Aes.Create("AES")
'設置密鑰
Dim keyBytes() As Byte = (New MD5CryptoServiceProvider).ComputeHash(Encoding.Unicode.GetBytes(Key))
encripter.BlockSize = keyBytes.Length * 8
encripter.Key = keyBytes
encripter.IV = keyBytes
encripter.Mode = CipherMode.CBC
encripter.Padding = PaddingMode.PKCS7
Dim cripter As ICryptoTransform = encripter.CreateEncryptor()
Dim inBuff As Byte() = Encoding.Unicode.GetBytes(Source)
Return Convert.ToBase64String(cripter.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 解密Base64編碼的字符串
''' </summary>
''' <param name="EncodedStr"></param>
''' <param name="Key"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function DecriptStr(ByVal EncodedStr As String, ByVal Key As String) As String
Dim decripter As System.Security.Cryptography.Aes = System.Security.Cryptography.Aes.Create("AES")
'設置密鑰
Dim keyBytes() As Byte = (New MD5CryptoServiceProvider).ComputeHash(Encoding.Unicode.GetBytes(Key))
decripter.BlockSize = keyBytes.Length * 8
decripter.Key = keyBytes
decripter.IV = keyBytes
decripter.Mode = CipherMode.CBC
decripter.Padding = PaddingMode.PKCS7
Dim cripter As ICryptoTransform = decripter.CreateDecryptor()
Dim inBuff As Byte() = Convert.FromBase64String(EncodedStr)
Return Encoding.Unicode.GetString(cripter.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
End Class