微信小程序解密encryptedData报错 20C

报错如下:javax.crypto.IllegalBlockSizeException: last block incomplete in decryption
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(Cipher.java:2165)
at com.zhjd.app.API.AES.decrypt(AES.java:41)
at com.zhjd.marked.controller.WxController.login(WxController.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
工具类AES:
*/
public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
initialize();
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
Key sKeySpec = new SecretKeySpec(keyByte, "AES");

        cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
        byte[] result = cipher.doFinal(content);(此句为报错的语句AES.java:41)
        return result;
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
                    ......

    Controller:
    byte[] resultByte  = AES.decrypt(Base64.decodeBase64(encryptedData),
                Base64.decodeBase64(session_key),
                Base64.decodeBase64(iv));
                                    .....
                                    (其中byte[] resultByte  = AES.decrypt(Base64.decodeBase64(encryptedData),)这一行为报错句WxController.java:49
0

2个回答

这个应该是没有解密出来正确的数据 原因是你获取的session_key ,不是加密时候用的那个session_key 我也遇到过这个情况 我的情况是前端获取的code
和得到的加密数据 两个请求顺序有问题 应该先拿到code 在获取加密的数据 这样你可以根据code获取最新的session_key 加密的数据也是经过刚获取的session_key 加密的

1
weixin_41302685
weixin_41302685 回复lsw789: 你解决了吗
4 个月之前 回复
lsw789
lsw789 哈哈,确实是良心回答,好多人都掉进了这个坑。
5 个月之前 回复
biu_biu_duda
biu_biu_duda 良心回答,赞赞赞
大约一年之前 回复

public static byte[] decrypt(String encryptedDataStr, String keyBytesStr, String ivStr) {
byte[] encryptedText = null;
byte[] encryptedData = null;
byte[] sessionkey = null;
byte[] iv = null;

    try {
        sessionkey = Base64.decodeBase64(keyBytesStr);
        encryptedData = Base64.decodeBase64(encryptedDataStr);
        iv = Base64.decodeBase64(ivStr);

        init(sessionkey);

        cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
        encryptedText = cipher.doFinal(encryptedData);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return encryptedText;
}
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#/.net微信小程序encryptedData解密
public string AES_decrypt(string showText, string key, string iv) { RijndaelManaged rijalg = new RijndaelManaged(); //----------------- //设置格式 AES-128-CBC
微信小程序encryptedData解密工具类
微信小程序开发,很多情况都会使用openid,另外小程序关联公众号使用公众号模板消息做消息提示时,由于此时的unionid是一致的,可以通过微信小程序的unionid间接获取到公众号模板消息发送时需要使用到的openid,所以,unionid也同样经常获取。但是微信小程序调用getUserinfo接口的时候,不会直接返回openid以及unionid,这些私密的信息一般会保存在加密字段encryp...
微信小程序解密encryptedData 报错:pad block corrupted 解决方法
通过wx.getUserInfo获取用户的openId 和unionId,需要对接口返回的加密数据( encryptedData )进行对称解密。/** * 功能描述: <br> * 〈功能详细描述〉 * * @param args * @see [相关类/方法](可选) * @since [产品/模块版本](可选) ...
微信小程序Python解密encryptedData密文报错
在使用微信官方提供的sdk(python)解密encryptedData密文时,报编码的错,其实这里是因为解密出的内容是乱码的,所以无法解码,那么为什么解密出的明文会乱码呢? 小程序使用wx.getuserinfo接口获取到的encryptedData是通过对称加密的形式加密过的,这个秘钥就是session_key,session_key又是什么呢,session_key是微信后台生成的一个秘钥,...
小程序 -- 解密encryptedData敏感数据
这个问题解决了好久,在网上查找各种资料因为涉及到加密算法(不是很了解),所以进度很慢 还有就是小程序的坑是在时太多了,当然和自己不细心阅读文档也有关系(但是个人表示 一些文档真的都不清楚要表达的意思)特此记录。 首先声明下本文本着学习的态度与大家交流,如果有写的不好理解不够的地方欢迎大家指正,不喜勿喷。 上面这个图片大家的叫法不一样,什么个人开发者、个人号...... 本文以下称:个人号 ...
微信小程序--用户信息encryptedData
之前做过一个版本是根据encryptData和Session_key解密得到完整的用户信息(包含union_id)的方法去获取用户信息,由于小程序升级,如今需要废弃encryptData的方式去获取用户信息,改成使用encryptedData的方式获取用户信息。新的数据解密方法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和unionId ),接口的明文内容将不包含这
微信小程序授权登陆,解密encryptedData出现乱码问题
前端传过来的encryptedData 用base64_decode解密后出现乱码 解决方法: 用get方式传加密的字符串时,接收到以后,字符串里包含的”+“会被替换成" " 解密时先将encryptedData 中的" “替换成”+" 这样就输出正常了,也可以更换数据传输方式 ...
小程序 php端解密encryptedData不成功
先用wx.login  再用wx.getUserInfo  这样第一次请求就能解密了   onGotUserInfo: function (e) { wx.login({ success: function (res) { wx.getUserInfo({ success: function (e) { ...
【小程序】使用Crypto插件解密encryptedData
近来做一小程序功能,需获取微信登录时返回encryptedData数据里的unionid , 返回的encryptedData是经过加密的需进行解密。 官方给的demo 都是后台的,尝试使用Crypto插件解密 小程序官方encryptedData解密 Crypto使用文档 getUnionId: function (key, iv, encryptedData) { const crypt...
微信:nodejs解密encryptedData获取用户信息
后端 nodejs代码 解密实例代码在官网有:有python,nodejs,PHP,C++版本,微信官方下载地址 微信官方提供的demo里面的值是固定的,由于每个人的session_key、encryptedData、iv值都不同所以,我们得需要前台传过来的值进行解密。 然而前台URL会把特殊符号进行编码: + URL 中+号表示空格 %2B ...
【小程序】java 后台获取用户信息(解密encryptedData)
首先java 后端依赖两个jar <dependency> <groupId>org.codehaus.xfire</groupId> <artifactId>xfire-core</artifactId> <version>1.2.6</version> </
Java对微信小程序userInfo中encryptedData解密
0x01 分析 同一主体下微信小程序和微信公众号下,同一个用户在不同的公众平台下openid是不同的,但是unionid是相同的,因此若需要创建同主体跨公众平台的系统时候,用户的unionid一定要记录下来。我遇到的场景是小程序已经上线,但是公众号还没有推广,但是未来的运营计划是根据小程序的用户行为在微信公众号进行模板消息推送,因此需要首先收集微信小程序用户的unionid。 要收集unioni...
微信小程序后台获取openid (解密encryptedData)
微信前台调用后台,传CODE 还有加密的文本  其中unionid 这个是需要在平台绑定的, 一个公司的小程序员,公众号等都 是同一个unionid 需要先绑定             1.需要微信前端调用wx.login接口获取code。 然后再调用wx.getuserInfo接口获取用户的信息。                        2. 前端调用服务器接口,将获取到的code,以...
微信小程序解密encryptedData用户信息所需js
微信小程序获取包括unionId在内的用户敏感信息,解密插件Crypto.js
微信小程序 WXBizDataCrypt 解密 报错
在使用微信官方WXBizDataCrypt.js解密encryptedData获取敏感数据的时候,偶尔会报错。 DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(),Buffer.allocUnsafe(), or Buffer....
微信小程序encryptedData解密偶尔报错-41003,这是什么问题造成的?
偶尔失败的情况,很大可能是wx.getUserInfo和wx.login的顺序弄错了。 正常的流程,wx.login拿到code =》 wx.getUserInfo拿到iv和encryptedData =》 发送给服务器解密 很容易错写成在wx.getUserInfo的回调里再调wx.login拿code再发送给服务器,这样,getUserInfo里的data加密用的session_key就有...
微信小程序加密数据(encryptedData)解密中的PHP代码,php7.1报错
问题描述 最近在开发微信小程序涉及到加密数据(encryptedData)的解密,用的是PHP代码,在运行后报错mcrypt_module_ xxx is deprecated,提示方法已过时了 经研究得知,是php7.1版本引起的,可以使用openssl方法代替解密. 首先要知道微信方使用的是AES-128-CBC加密的: ​​ 所以...
微信小程序报错
加载 app-service.js 错误 WAService.js:2 不要在 undefined.js 注册多个Page APP-SERVICE-Engine:Please do not register multiple Page in undefined.js 开始新建一个小程序,结果报这么多错误。 但是我点击到编辑页查看的时候,没有pages,utils呀。。
微信小程序数据解密
public static String decrypt(String encryptedData, String ivData, String code) { try { //微信的接口,通过code获取sessionKey String url = "https://api.weixin.qq.com/sns/jscod...
微信小程序加密及解密
这是一个java解密小程序的一个例子,希望可以帮到大家。
微信小程序用户信息解密
文章不是很全面,只是截取了项目内容的一部分,不明白的地方可以私信。当初之所以要去解密用户数据,只是为了拿到unionId,说来奇怪,其实微信的登录凭证校验接口(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorizati...
java服务器解密微信小程序
网上的大部分代码都很坑啊!     真不知道他们怎么解密出来的。   不是BadPading ....Exception就是解密出来的数据是空的或者是一大串看不懂的玩意儿。 推荐一个代码,亲测可用,没亲测天打雷劈。     感谢!原文链接:https://yangguangftlp.iteye.com/blog/2339087 代码我也不知道啥意思,白问我。 运行截图为证!:...
微信小程序解密用户信息--java解密
1.wx.login()方法获取code,通过code换取session_key   2.wx.getUserInfo()方法获取:     encryptedData 包括敏感数据在内的完整用户信息的加密数据     iv   加密算法的初始向量   3.java进行解密         (1)解密使用的jar包     <!--微信小程序进行解密加密的用户信息 --&...
微信小程序-解密微信运动数据
微信小程序API-微信运动 https://mp.weixin.qq.com/debug/wxadoc/dev/api/we-run.html#wxgetwerundataobject思路:wx.login获取的code请求获取的session_key,wx.getWeRunData获取的iv,encryptData,将它们一起发送到后台解密就行了。安全顾虑,因为只是示例所以直接传递session
有关小程序的JAVA后台解密encryptedData获取openid及用户信息
先贴上工具类,可获取openid及session_key,session_key在解密时会用到,这里还需要用到几个jar包 bouncycastle-jce-jdk13-112.jar xfire-core-1.2.6.jar 百度搜一下就有 GetOpenid.java获取信息工具类package com.hongbao.utils;import java.io.UnsupportedEn
微信小程序 用户信息解密 JAVA 微信用户数据解密
用于微信小程序用户数据解密。 JAVA 代码实现 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。 对称解密的目标密文为 Base64_Decode(encryptedData)。 对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节。 对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返回。
微信小程序:wx:for 报错
当我们开发微信小程序用到 wx:for 时可能会在控制台报 "Now you can provide attr "wx:key" for a "wx:for" to improve performance" 的警告 不要慌张这只是警告不妨碍运行,消除警告只需要在"wx:for"后面添加wx:key="xxx"就行了...
微信小程序报错集结
1、更新小程序开发工具,创建项目后,提示.wxss错误 解决方式:a、在Console界面输入“openVendor()”,b、回车后,打开一个文件夹,将其中的wcc.exe和wcsc.exe两个可执行文件删除,c、之后重启开发工具即可。
微信小程序报错总结
1、警告: Now you can provide attr wx:key for a wx:for to improve performance. 解决办法:在 wx:for 后面添加 wx:key=”***” 即可,如 <block wx:for="{{Industry}}" wx:key="key"> 2、警告:Do not set same key “NaN” in wx:k...
微信小程序 代理报错
微信小程序报错: Error: tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:64412 解决办法 : 设置-》代理设置-》改成不使用代理
关于微信小程序登录获取unionId解密报错
解密获取微信unionId标识时经常会发生解密失败的错误,net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of,小程序上线了一段时间,解密失败的频率越来越高(一般发生长时间未调用后第一次调用),百思不得其解,后台查阅了微信的官方文档,反复测验发现了原因。 其实解密失败,主要原因当初...
微信小程序解密encryptedData数据字符串,php中隐形字符65279(utf-8的BOM头)问题
最近搞微信小程序开发,碰到一个坑。 直接上图 我服务器用的PHP 这是下载下来文件 按照API教程,一步一步整到解析出完整的用户隐私数据 教程链接 https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html 然后发现解析出来的字符串不能通过json验证,拷到文本文档里面,发现前面多了几个隐形的字符 我
微信小程序开发学习笔记002--微信小程序框架解密
1.今天内容比较多, 框架解密 • 目录结构 • 配置文件详解 • 逻辑层 • Api简介 ----------------------- 2.打开微信开发工具,   点击添加项目,选择无appid模式   credemo02   点击添加项目就创建好了. 3.首先打开sublime   然后file-->open folder-->找到credemo02
微信小程序架构解密
微信小程序从入门到是项目实战,前面6次课讲解微信小程序的基础概念,后2次课讲解微信小程序的项目
微信小程序后台解密用户数据
微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html openId : 用户在当前小程序的唯一标识 因为最近根据API调用https://api.weixin.qq.com/sns/jscode2session所以需要配置以下服务,但是官方是不赞成这种做法的, 而且最近把在服务器配置的方法给关闭
微信小程序解密数据(encryptData)
  /** * 对公众平台发送给公众账号的消息加解密示例代码. * * @copyright Copyright (c) 1998-2014 Tencent Inc. */ import java.nio.charset.Charset; import java.util.Arrays; /** * 提供基于PKCS7算法的加解密接口. */ ...
线程池的使用与执行流程
合理使用线程池能够带来3个好处: 1)降低资源消耗;2)提高响应速度;3)提高线程的可管理性;4)提高应该程序的高可用性。 那么线程池是如何工作的呢,借用并发编程艺术一书中的话来描述当一个任务提交给线程池之后,线程池会怎么做? 首先,线程池会判断核心线程池里的线程(线程总数是30,则coreSize有可能是10)是否都在执行任务。如果没有比方说当前只有9个线程在工作,则从核心线程池中创建一个新的...
微信小程序 aes加密 aes解密
微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文: aes.js文件需要下载:点击打开链接 //util.js var CryptoJS = require('aes.js'); var key = CryptoJS.enc.Utf8.parse("十六进制数作为秘钥"); var iv = CryptoJS.enc.Utf8.parse(...
微信小程序中的session_key的使用方法
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
微信小程序--手机号解密!必成功!!!
先上代码哈,希望你看完别走;1.点赞;2.留言说一下我的问题。欢迎来稿 public class WxPhoneUtil { private static WxPhoneUtil wxPhoneUtil = null; public static WxPhoneUtil getInit() { if (wxPhoneUtil == null) w...