des加密的问题,老是出错,高手看看哪里出了问题,谢谢!
Imports System.Security
Imports System.Security.Cryptography
Imports System.Text
Public Class encodecoded
Public Sub New()
End Sub
Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
Dim Vector() As Byte = {&H12, &H44, &H16, &HEE, &H88, &H15, &HDD, &H41}
Dim des As New DESCryptoServiceProvider
Dim inputByteArray() As Byte
inputByteArray = Encoding.Default.GetBytes(pToEncrypt)
'建立加密对象的密钥和偏移量
'原文使用ASCIIEncoding.ASCII方法的GetBytes方法
'使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
des.IV = Vector
'写二进制数组到加密流
'(把内存流中的内容全部写入)
Dim ms As New System.IO.MemoryStream
Dim cs As New CryptoStream(ms, des.CreateEncryptor, CryptoStreamMode.Write)
'写二进制数组到加密流
'(把内存流中的内容全部写入)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
'建立输出字符串
Dim ret As New StringBuilder
Dim b As Byte
For Each b In ms.ToArray()
ret.AppendFormat("{0:X2}", b)
Next
Return ret.ToString()
End Function
'解密方法
Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
Dim Vector() As Byte = {&H12, &H44, &H16, &HEE, &H88, &H15, &HDD, &H41}
Dim des As New DESCryptoServiceProvider
'把字符串放入byte数组
Dim inputByteArray() As Byte
inputByteArray = Encoding.Default.GetBytes(pToDecrypt)
'建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
des.IV = Vector
Dim ms As New System.IO.MemoryStream
Dim cs As New CryptoStream(ms, des.CreateDecryptor, CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
Dim codestring As String
codestring = Encoding.Default.GetString(ms.ToArray)
cs.FlushFinalBlock()
Return codestring
End Function
End Class
总是出现异常,在 cs.FlushFinalBlock()那里老是出现“ 要解密的数据的长度无效。"
谢谢啊