微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
解密加密源码
using System;
using System.Security.Cryptography;
using System.Text; namespace Wechat
{
public static class Security
{
public static string Decrypt(string key, string iv, string data)
{
var rgbKey = Convert.FromBase64String(key);
var rgbIV = Convert.FromBase64String(iv);
var bytes = Convert.FromBase64String(data); try
{
using var managed = new AesManaged()
{
Mode = CipherMode.CBC,
BlockSize = ,
Padding = PaddingMode.PKCS7
};
using var decryptor = managed.CreateDecryptor(rgbKey, rgbIV);
var final = decryptor.TransformFinalBlock(bytes, , bytes.Length);
return Encoding.UTF8.GetString(final);
}
catch
{
return null;
}
} public static string Encrypt(string key, string iv, string data)
{
var rgbKey = Convert.FromBase64String(key);
var rgbIV = Convert.FromBase64String(iv);
var bytes = Encoding.UTF8.GetBytes(data); try
{
using var managed = new AesManaged()
{
Mode = CipherMode.CBC,
BlockSize = ,
Padding = PaddingMode.PKCS7
};
using var encryptor = managed.CreateEncryptor(rgbKey, rgbIV);
var final = encryptor.TransformFinalBlock(bytes, , bytes.Length);
return Convert.ToBase64String(final);
}
catch
{
return null;
}
}
}
}
其次说一下为什么会第一次或间断性解密失败?
我开始的微信小程序代码 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的更多相关文章
- 微信小程序加密解密参数
加密:encodeURIComponent(参数) 解密:decodeURIComponent(参数)
- thinkphp 导入微信小程序加密解密库
第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类库等. 前面使用自动加载或 import 方法导入的 ...
- Java之——实现微信小程序加密数据解密算法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...
- 微信小程序的button按钮设置宽度无效
亲,你是不是也遇到了微信小程序的button按钮设置宽度无效.让我来告诉你怎么弄 方法1. 样式中加入!important,即:width: 100% !important; wxss代码示例 1 2 ...
- 微信小程序AES解密失败
微信小程序分享群获取群id时后端接口返回"微信AES解密失败",后来定位到原因是服务端用于解密的session_key失效.用户获取到openID存在缓存后,就不会每次login获 ...
- 微信小程序,工具未检测合法域名,400 (Bad Request)错误
1.工具未检测合法域名 这个我就不多说了,如果你新建的时候没有填写AppID的话这个我就不太清楚了 如果新建项目的时候填写了AppID的话,出现这种错误,那你应该去小程序后台 设置->开发者设置 ...
- 微信小程序 - height: calc(xx - xx);无效
遇到一个小问题,记录一下 问题:在微信小程序中使用scroll-view标签时,用height:cale(xx - xx)设置高度无效,在page中设置高度为百分百依旧无效 解决办法:直接在父级vie ...
- 微信小程序手机号解密失败-43001
今天是2020年1月16号,从昨天下午开始,一直遇到一个问题: 客户在注册会员的时候的第二步,验证手机号的时候,一直提示验证失败,-43001 直接说原因:用户的session_key过期 期间大部分 ...
- “完美”解决微信小程序购物车抛物动画,在连续点击时出现计算错误问题,定时器停不下来。
最近做,微信点餐小程序,遇到添加商品时出现抛物动画,参考借鉴了这位大神的方法 https://www.cnblogs.com/greengage/p/7815842.html 但出现了一个问题,连续点 ...
随机推荐
- Drawer 侧边栏、以及侧边栏内 容布局
一.Flutter Drawer 侧边栏 在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显 ...
- 多种语言输出helloworld
- Jmeter 测试结果分析之聚合报告简介
聚合报告(aggregate report) 对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量. 吞吐量是以取样目标点 ...
- 【C语言】创建一个函数,利用该函数将两个字符串连接起来
代码: #include<stdio.h> ], ]) { int i, j; ; c[i] != '\0'; i++); ; d[j] != '\0'; j++) { c[i++] = ...
- h5页面调用相机功能
//accept:表示要打开的文件类型 capture:表示可以捕获到系统默认的设备 <input type="file" accept="image/*" ...
- mybatis批量插入和更新
批量插入 <insert id="add" parameterType="java.util.List"> insert all <forea ...
- Git创建合并和删除分支
创建并切换分支 git checkout命令加上-b参数表示创建并切换分支,以下为创建并切换到dev分支: 相当于先通过 $ git branch dev 命令创建dev分支,然后 $ git che ...
- CSS 动画过程及间接实现样式延时
/* 过度动画自动归位 */ @keyframes animation_button_scene { 0% { background: #9cacb4; } 10% { /* 样式过度2 */ } 6 ...
- angular常用命令整理
1.创建项目 ng new 命令 描述ng new <project-name> [options] 创建一个新的 Angular 项目,默认在当前所在目录下参数 描述--dry-run ...
- Educational Codeforces Round 73
唉,又是掉分的一场比赛... A. 2048 Game 题意:给出一个数组,问能不能通过一系列操作(将数组中的两个数相加变成另一个数),使得数组中包含2048,数组中的数全是2的指数,可以则输出YES ...