vb.net AES CBC加密模式问题

bz0615 bz0615 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在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
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
bz0615
VB 16,718 成员 110,520 内容