使用AES加密算法,VB6.0与C#的密文不一致

a875210 2013-04-21 04:48:32
使用AES加密算法,VB6.0与C#的密文不一致
...全文
324 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2013-04-22
  • 打赏
  • 举报
回复
一、明文的编码不同
'VB.NET 是 Unicode 编码
Private Function Encrypt(ByVal plainText As String, ByVal key As String) As String
    Dim plainTextData As Byte() = Encoding.Unicode.GetBytes(plainText)

'VB6 就不能用 ANSI 编码
Private Sub cmdEncrypt_Click()
    'plaintext = StrConv(Text1.Text, vbFromUnicode)
    plaintext = Text1.Text
二、填充
'VB6 填充 0
Private Sub cmdEncrypt_Click()
    m_Rijndael.ArrayEncrypt plaintext, ciphertext, 0

'VB.Net 要一致
Private Function Encrypt(ByVal plainText As String, ByVal key As String) As String
    'AES.Padding = PaddingMode.PKCS7
    AES.Padding = PaddingMode.Zeros
三、输出显示不同
'VB6 是 16 进制显示
Private Sub cmdEncrypt_Click()
    DisplayString Text1, HexDisplay(ciphertext, UBound(ciphertext) + 1, BlockBits \ 8)

'VB.Net 是 Base-64 显示
Private Function Encrypt(ByVal plainText As String, ByVal key As String) As String
    Encrypt = Convert.ToBase64String(outputData)

'要改成一样的输出格式
of123 2013-04-22
  • 打赏
  • 举报
回复
你输入的是什么格式?DLL 输入要求的是什么格式? 实际上,用 AES 的标准 Vector 检测一下就知道问题所在了。有些软件是用来做文件加密的,默认模式输入是 ASCII 字符,会在软件内部做一次格式转换。
vivienne_gmz 2013-04-22
  • 打赏
  • 举报
回复
S盒、IV设置都一致?
a875210 2013-04-22
  • 打赏
  • 举报
回复
我进行加密的byte数组都进行对比了
of123 2013-04-22
  • 打赏
  • 举报
回复
估计是对输入明文的格式规定不一致造成的,例如解释成十六进制字符串还是 ASCII 码字符。
a875210 2013-04-21
  • 打赏
  • 举报
回复
测试源代码下载地址 VB.NET AES加密下载地址:http://pan.baidu.com/share/link?shareid=499857&uk=704756818 VB6.0 AES加密源代码下载地址:http://pan.baidu.com/share/link?shareid=499859&uk=704756818
bcrun 2013-04-21
  • 打赏
  • 举报
回复
请给出你测试用的完整代码,方便其他人测试

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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