• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

解密加密源码

 1 using System;
 2 using System.Security.Cryptography;
 3 using System.Text;
 4 
 5 namespace Wechat
 6 {
 7     public static class Security
 8     {
 9         public static string Decrypt(string key, string iv, string data)
10         {
11             var rgbKey = Convert.FromBase64String(key);
12             var rgbIV = Convert.FromBase64String(iv);
13             var bytes = Convert.FromBase64String(data);
14 
15             try
16             {
17                 using var managed = new AesManaged()
18                 {
19                     Mode = CipherMode.CBC,
20                     BlockSize = 128,
21                     Padding = PaddingMode.PKCS7
22                 };
23                 using var decryptor = managed.CreateDecryptor(rgbKey, rgbIV);
24                 var final = decryptor.TransformFinalBlock(bytes, 0, bytes.Length);
25                 return Encoding.UTF8.GetString(final);
26             }
27             catch
28             {
29                 return null;
30             }
31         }
32 
33         public static string Encrypt(string key, string iv, string data)
34         {
35             var rgbKey = Convert.FromBase64String(key);
36             var rgbIV = Convert.FromBase64String(iv);
37             var bytes = Encoding.UTF8.GetBytes(data);
38 
39             try
40             {
41                 using var managed = new AesManaged()
42                 {
43                     Mode = CipherMode.CBC,
44                     BlockSize = 128,
45                     Padding = PaddingMode.PKCS7
46                 };
47                 using var encryptor = managed.CreateEncryptor(rgbKey, rgbIV);
48                 var final = encryptor.TransformFinalBlock(bytes, 0, bytes.Length);
49                 return Convert.ToBase64String(final);
50             }
51             catch
52             {
53                 return null;
54             }
55         }
56     }
57 }

其次说一下为什么会第一次或间断性解密失败?

我开始的微信小程序代码 button 点击 -> 得到 iv,encryptedData -> wx.login -> 得到 code -> code,iv,encryptedData 发送服务器 -> 然后 code 得到 session_key  然后解密,

问题出在哪里呢,就出在点击 button 的地方,没有 wx.login 得到code 的时候,iv和encryptedData 就已存在一个session_key ,和之后得到的session_key 就不同了,

所以

在点击“获取信息”按钮 之前就应该先使用wx.login 得到code或者session_key,然后 点击 按钮 ,所以 在 onload 或者 onshow 里面 就应该 wx.login 得到 code或者 session_key


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap