您的位置:首页 > 编程语言 > VB

Visual Basic.Net AES加密函数

2014-12-09 11:51 288 查看
Imports System.Text
Imports System.Security.Cryptography
Imports System.IO

Public Class clsAES
'加密函数
Public Function AESEncrypt(ByVal sText As String, ByVal sKey As String, ByVal sIV As String) As String

If sText Is Nothing OrElse sText.Length <= 0 Then Throw New ArgumentNullException("sText")
If sKey Is Nothing OrElse sKey.Length <= 0 Then Throw New ArgumentNullException("sKey")
If sIV Is Nothing OrElse sIV.Length <= 0 Then Throw New ArgumentNullException("sIV")

Dim arrReturn() As Byte

Using objAES As New RijndaelManaged()
Using objMD5 As New MD5CryptoServiceProvider

objAES.Key = objMD5.ComputeHash(Encoding.UTF8.GetBytes(sKey))
objAES.IV = objMD5.ComputeHash(Encoding.UTF8.GetBytes(sIV))

Dim objITF As ICryptoTransform = objAES.CreateEncryptor(objAES.Key, objAES.IV)

Using objMS As New MemoryStream()
Using objCS As New CryptoStream(objMS, objITF, CryptoStreamMode.Write)
Using objSW As New StreamWriter(objCS)
objSW.Write(sText)
End Using
arrReturn = objMS.ToArray()
End Using
End Using
End Using
End Using

Return Convert.ToBase64String(arrReturn)

End Function

'解密函数
Public Function AESDecrypt(ByVal sWord As String, ByVal sKey As String, ByVal sIV As String) As String

If sWord Is Nothing OrElse sWord.Length <= 0 Then Throw New ArgumentNullException("sWord")
If sKey Is Nothing OrElse sKey.Length <= 0 Then Throw New ArgumentNullException("sKey")
If sIV Is Nothing OrElse sIV.Length <= 0 Then Throw New ArgumentNullException("sIV")

Dim sReturn As String = Nothing

Using objAES As New RijndaelManaged
Using objMD5 As New MD5CryptoServiceProvider
objAES.Key = objMD5.ComputeHash(Encoding.UTF8.GetBytes(sKey))
objAES.IV = objMD5.ComputeHash(Encoding.UTF8.GetBytes(sIV))

Dim objITF As ICryptoTransform = objAES.CreateDecryptor(objAES.Key, objAES.IV)

Using objMS As New MemoryStream(Convert.FromBase64String(sWord))
Using objCS As New CryptoStream(objMS, objITF, CryptoStreamMode.Read)
Using objSR As New StreamReader(objCS)
sReturn = objSR.ReadToEnd()
End Using
End Using
End Using
End Using
End Using

Return sReturn

End Function
End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: