解密加密源码

  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 = ,
  21. Padding = PaddingMode.PKCS7
  22. };
  23. using var decryptor = managed.CreateDecryptor(rgbKey, rgbIV);
  24. var final = decryptor.TransformFinalBlock(bytes, , 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 = ,
  45. Padding = PaddingMode.PKCS7
  46. };
  47. using var encryptor = managed.CreateEncryptor(rgbKey, rgbIV);
  48. var final = encryptor.TransformFinalBlock(bytes, , 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

微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed的更多相关文章

  1. 微信小程序加密解密参数

    加密:encodeURIComponent(参数) 解密:decodeURIComponent(参数)

  2. thinkphp 导入微信小程序加密解密库

    第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类库等. 前面使用自动加载或 import 方法导入的 ...

  3. Java之——实现微信小程序加密数据解密算法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...

  4. 微信小程序的button按钮设置宽度无效

    亲,你是不是也遇到了微信小程序的button按钮设置宽度无效.让我来告诉你怎么弄 方法1. 样式中加入!important,即:width: 100% !important; wxss代码示例 1 2 ...

  5. 微信小程序AES解密失败

    微信小程序分享群获取群id时后端接口返回"微信AES解密失败",后来定位到原因是服务端用于解密的session_key失效.用户获取到openID存在缓存后,就不会每次login获 ...

  6. 微信小程序,工具未检测合法域名,400 (Bad Request)错误

    1.工具未检测合法域名 这个我就不多说了,如果你新建的时候没有填写AppID的话这个我就不太清楚了 如果新建项目的时候填写了AppID的话,出现这种错误,那你应该去小程序后台 设置->开发者设置 ...

  7. 微信小程序 - height: calc(xx - xx);无效

    遇到一个小问题,记录一下 问题:在微信小程序中使用scroll-view标签时,用height:cale(xx - xx)设置高度无效,在page中设置高度为百分百依旧无效 解决办法:直接在父级vie ...

  8. 微信小程序手机号解密失败-43001

    今天是2020年1月16号,从昨天下午开始,一直遇到一个问题: 客户在注册会员的时候的第二步,验证手机号的时候,一直提示验证失败,-43001 直接说原因:用户的session_key过期 期间大部分 ...

  9. “完美”解决微信小程序购物车抛物动画,在连续点击时出现计算错误问题,定时器停不下来。

    最近做,微信点餐小程序,遇到添加商品时出现抛物动画,参考借鉴了这位大神的方法 https://www.cnblogs.com/greengage/p/7815842.html 但出现了一个问题,连续点 ...

随机推荐

  1. zxEditor

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-C ...

  2. argument

    js中arguments的用法   了解arguments这个对象之前先来认识一下javascript的一些功能: 其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载 ...

  3. 无显示器安装raspberry zero w树莓派 zero w

    笔者的环境 1. Macbook 电脑用于烧录树莓派系统到SD卡 2. 树莓派 zero w 把SD卡放进读卡器,插到Mac电脑上, 打开命令行工具Terminal diskutil list列出di ...

  4. Unity切换场景后变暗

    这个问题估计很多人都碰到过,原因是切换场景的光照贴图数据丢失,解决方案如下: 打开你要切换的场景,打开Windows-Lighting-Settings,将最下面的Auto Generate前面的勾去 ...

  5. Linux下系统版本查询命令

    # uname -a (Linux查看版本当前操作系统内核信息) # cat /proc/version (Linux查看当前操作系统版本信息) # cat /etc/issue 或 cat /etc ...

  6. X-Frame-Options报错处理

    项目中用到iframe嵌入网页,因为是前后端分离的,所以前端会报错Refused to display ‘网址' in a frame because it set 'X-Frame-Options' ...

  7. spring简要回顾

    spring内容 spring容器: @Repository @Service @Controller @Component <bean id="类名首字母小写">默认 ...

  8. opencv python:图像直方图 histogram

    直接用matplotlib画出直方图 def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) # image.ravel()将图像展开 ...

  9. linux 命令——screen

    最近遇到一个东西aria2,这个玩意,这个是啥呢?Aria2是一个轻量级Linux下载软件,支持HTTP/HTTPS, FTP, SFTP, BitTorrent和磁力链接(官方版),公司系统插件配套 ...

  10. Windows Server 2012R2 实现AD双域控制器互为冗余

    前言 在部署活动目录服务的时候,首先应该考虑域控制器的安全性,主域控一旦崩掉,一般很难修复,后果非常严重,本文介绍在活动目录中部署两台域控制器,两台都是主控,互为冗余. 环境网络192.168.100 ...