支付宝IOT小程序AES密钥解密

实际测试 KEY 是 16个 byte,byte[] byteKEY = System.Convert.FromBase64String(key);     注意:是Convert.FromBase64String转 byte[] ,  而不是 Encoding.UTF8.GetBytes 转 byte[]   。

IV 也是 16个 byte,全是0;

--

/// <summary>
        /// 支付宝小程序AES密钥解密
        /// </summary>
        /// <param name="decryptStr"></param>
        /// <param name="key">小程序后台设置里的AES密钥</param>
        /// <returns></returns>
        public static string AliPayLittleAppAesDecrypt(string decryptStr, string key)
        {
            //IV 16 个 byte 都是 0
            int ivSize = 16;
            byte[] iv = new byte[ivSize];
            for (int i = 0; i < ivSize; ++i)
            {
                iv[i] = 0;
            }

            //https://docs.open.alipay.com/common/104567
            //支付宝小程序的AES密钥串是BASE64编码过的,所以这里的BYTE KEY 是 System.Convert.FromBase64String
            //转换后,16 个 byte,是AES128。
            byte[] byteKEY = System.Convert.FromBase64String(key);             

            byte[] byteDecrypt = System.Convert.FromBase64String(decryptStr);

            var _aes = new RijndaelManaged();
            _aes.Padding = PaddingMode.PKCS7;
            _aes.Mode = CipherMode.CBC;
            //重新指定下KEY和IV,让 RijndaelManaged自动计算KEYSIZE;
            _aes.Key = byteKEY;
            _aes.IV = iv;            

            var _crypto = _aes.CreateDecryptor(byteKEY, iv);
            byte[] decrypted = _crypto.TransformFinalBlock(
                byteDecrypt, 0, byteDecrypt.Length);

            _crypto.Dispose();

            return Encoding.UTF8.GetString(decrypted);
        }

--

原文地址:https://www.cnblogs.com/runliuv/p/11846938.html

时间: 2024-08-30 08:15:40

支付宝IOT小程序AES密钥解密的相关文章

微信小程序AES加密解密

微信小程序  其实在调用一些第三方 js的时候 其实没有大家想的那么复杂,无非就是把原生js调用方式   改为微信小程序 js调用方式 废话不多说直接贴代码 其实就是将原生function 或者 对象 赋值给 module.exports; 至于module.exports 不懂得 先去看微信开发文档 在这里就不多说了 本次讲一下主要思路 1.首先老规矩 去下载 原生aes.js 的 文件 https://github.com/hellobajie/AES-of-JavaScript 2.修改a

微信小程序用户信息解密失败导致的内存泄漏问题。

微信小程序获取用户解密的Session_key 然后对 encryptedData进行解密 偶尔报错 时间长了之后会报内存溢出: java.lang.OutOfMemoryError: GC overhead limit exceeded at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:426) at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:322) at

微信小程序开放数据解密 AES-128-CBC 解密(C#版本)

最近在开发小程序,需要跟微信服务端交互,微信敏感数据都有加密返回,需要在服务端接收进行解密后再返回给客户端小程序,今天就通过C# 进行数据的解密,官方下载下来是Node.C++.php等,就是没有C# 代码,于是就上度娘,找到 https://blog.csdn.net/jasonsong2008/article/details/83586119 https://www.cnblogs.com/jetz/p/6384809.html 经过一番研究,搞定啦,其实就是用了aes加密方法. 下面把第一

使用CryptoJS解决微信小程序用户信息解密

使用CryptoJS解决微信小程序用户信息解密 问题描述: wx.getUserInfo(OBJECT)微信官方的这个获取用户信息的方法,需要对接口返回的加密数据( encryptedData )进行对称解密. 微信官方有提供加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和unionId ),接口的明文内容将不包含这些敏感数据.开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密. 解密算法如下: 对称解密

[转]微信小程序登录数据解密以及状态维持

本文转自:http://www.cnblogs.com/cheesebar/p/6689326.html 学习过小程序的朋友应该知道,在小程序中是不支持cookie的,借助小程序中的缓存我们也可以存储一些信息,但是对于一些比较重要的信息,我们需要通过登录状态维持来保存,同时,为了安全起见,用户的敏感信息,也是需要加密在网络上传输的. 前台,service.封装了http请求,同时封装了getSession(通过code获取服务器生成的session).getUserInfo(获取用户信息).ge

死磕微信!支付宝版“小程序”曝光

微信已经确认:"小程序"将于1月9日正式上线.张小龙还强调,小程序的入口不在微信,而是在二维码里面. 而近日,网上曝出支付宝也要做"小程序"了,而且疑似泄露开发文档. 有网友透露,阿里自身有Weex作为基础,稍作修改就可以直接套用到现在的"小程序"上,体验以及完成度上应该会比微信小程序高很多,同时支付宝可以更好地利用自身积累的第三方支付场景使用频繁的服务. 据网友提供的截图显示,支付宝内部测试界面所采用的名称为"支付宝小程序"

php小程序登录时解密getUserInfo获取openId和unionId等敏感信息

在获取之前先了解一下openId和unionId openId : 用户在当前小程序的唯一标识 unionId : 如果开发者拥有多个移动应用.网站应用.和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用.网站应用和公众帐号(包括小程序),用户的unionid是唯一的.换句话说,同一用户,对同一个微信开放平台下的不同应用,unionId是相同的.详情登录微信开放平台(open.weixin.qq.com) . 在微信小程序开发中,uni

力软敏捷开发框架V7.0.6新版移动端上线,支持钉钉、支付宝等小程序

日前,力软敏捷开发框架V7.0.6正式更新,新增了微信小程序模块,为了进一步提升框架的实用性,对移动端功能再次进行了更新,目前可同步支持微信.支付宝.百度.头条.QQ.钉钉等小程序. 小程序相关功能使用方法比较简单,这里以钉钉为例做一下基础演示: 在表单页右上角点击"分享"按钮,可以分享到钉钉群聊或私聊 相关人员点击这个链接会自动启动小程序,登录之后直接跳转到对应的表单,自动进入流程. 如账号已经登陆,会直接进入流程 到此流程结束. 力软敏捷开发框架是一套基于智能化可扩展组件式的软件系

微信小程序-Base64 加解密

js: var Base64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode (str) { // 加密 var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; str = this._utf16to8(str); while (i < st