vb.net AES CBC加密模式问题

bz0615 2014-03-09 08:06:29
我在vb.net中使用AES的CBC模式加密文本,如256位加密AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA得到

F4EF70150E5C5E23EE2D4D88B57EE14CF004464973EB9A15B8E0A260A469A2040E0281344599B9F9C4D0210ECB1ABA13C701F3F527FF052119113E49D97962C8AA52E48E9E556FC600A56A5E0D119295

修改其中一位比如这样

E4EF70150E5C5E23EE2D4D88B57EE14CF004464973EB9A15B8E0A260A469A2040E0281344599B9F9C4D0210ECB1ABA13C701F3F527FF052119113E49D97962C8AA52E48E9E556FC600A56A5E0D119295

以原密码解密
得到

抝ى寽ꄮ൛ͣ䧲姓QAAAAAAAAAAAAAAAAAAAAAAAA(希望论坛认得乱码)
但是CBC模式不应该是一位出错会导致全部出错的吗

这是我的代码(对密码混乱的处理方式就不要看了。。)
Private Sub cmdEntext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEntext.Click
If txtpassword.Text = txtconfirm.Text Then
txtd.Text = Encrypttext(txts.Text, txtconfirm.Text, Val(Microsoft.VisualBasic.Left(howmanybits.Text, 3)))
Else
MsgBox("两次密码不一致!", MsgBoxStyle.Critical, "提示")
End If
End Sub

Public Function Encrypttext(ByVal plaintext As String, ByVal sKey As String, ByVal keysize As Integer) As String
On Error Resume Next
Dim AES As New RijndaelManaged()
Dim sha384 As New SHA384CryptoServiceProvider
Dim sha256 As New SHA256CryptoServiceProvider
Dim sha512 As New SHA512CryptoServiceProvider
Dim MD5 As New MD5CryptoServiceProvider
If keysize = 128 Then AES.KeySize = 128 : AES.Key = gethalf(sha256.ComputeHash(Encoding.Unicode.GetBytes(sKey)))
If keysize = 192 Then AES.KeySize = 192 : AES.Key = gethalf(sha384.ComputeHash(Encoding.Unicode.GetBytes(sKey)))
If keysize = 256 Then AES.KeySize = 256 : AES.Key = gethalf(sha512.ComputeHash(Encoding.Unicode.GetBytes(sKey)))
AES.Padding = PaddingMode.PKCS7
AES.IV = MD5.ComputeHash(Encoding.Unicode.GetBytes("By Bz"))
AES.Mode = CipherMode.CBC
Dim desencrypt As ICryptoTransform = AES.CreateEncryptor()
Dim ms As New MemoryStream
Dim cryptostream As New CryptoStream(ms, desencrypt, CryptoStreamMode.Write)
Dim plaintextdata As Byte() = Encoding.Unicode.GetBytes(plaintext)
cryptostream.Write(plaintextdata, 0, plaintextdata.Length)
cryptostream.FlushFinalBlock()
Return Replace(BitConverter.ToString(ms.ToArray()), "-", "")
cryptostream.Close()
ms.Close()
Form1.cmdEntext.Enabled = True
Form1.cmdDetext.Enabled = True
End Function
...全文
226 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧