c# 解密微信encryptedData字段
参考链接:https://www.cnblogs.com/jetz/p/6384809.html
我写了一个工具方法,直接照搬链接中的方法,还有一个工具类。
public class Encrypt
{
#region SHA1解密 /// <summary>
/// 解密小程序的encryptedData
/// </summary>
/// <param name="encryptedData">加密的信息</param>
/// <param name="sessionKey">key</param>
/// <param name="iv">加密算法的初始向量</param>
public static WxPhoneModel DescodeWxSHA1(string encryptedData, string sessionKey, string iv)
{
WxPhoneModel model = null;
var res = AESDecrypt(encryptedData, sessionKey, iv);// {"phoneNumber":"152XXXX9583","purePhoneNumber":"1525XXXX3","countryCode":"86","watermark":{"timestamp":1525829586,"appid":"wx38XXXXXXXX43"}}
if (!string.IsNullOrEmpty(res))
{
model = JObject.Parse(res).ToObject<WxPhoneModel>();
}
return model;
} public static string AESDecrypt(string encryptedData, string sessionKey, string iv)
{
try
{
//16进制数据转换成byte
var encryptedDataByte = Convert.FromBase64String(encryptedData); // strToToHexByte(text);
var rijndaelCipher = new RijndaelManaged
{
Key = Convert.FromBase64String(sessionKey),
IV = Convert.FromBase64String(iv),
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
}; var transform = rijndaelCipher.CreateDecryptor();
var plainText = transform.TransformFinalBlock(encryptedDataByte, , encryptedDataByte.Length);
var result = Encoding.Default.GetString(plainText); return result;
}
catch (Exception ex)
{
return null; }
} #endregion
}
public class WxPhoneModel
{
/// <summary>
/// 用户绑定的手机号(国外手机号会有区号)
/// </summary>
public string PhoneNumber { set; get; } /// <summary>
/// 没有区号的手机号
/// </summary>
public string PurePhoneNumber { set; get; } /// <summary>
/// 区号
/// </summary>
public string CountryCode { set; get; } /// <summary>
/// 水印
/// </summary>
public WaterMarkModel WaterMark { set; get; }
} public class WaterMarkModel
{
/// <summary>
/// appid
/// </summary>
public string AppId { set; get; } /// <summary>
/// 时间戳
/// </summary>
public string TimeStamp { set; get; }
}
c# 解密微信encryptedData字段的更多相关文章
- 解密微信sqlite数据库
最近在研究解密微信APP的数据库, 1.通过Android手机内置备份功能,可以获取到微信的数据库文件,再通过adb传到电脑上. 2.获取微信EnMicroMsg.db库的密码(通过IMEI和uin值 ...
- java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口指定解密方式
1.场景 在做微信支付退款通知接口时,微信对通知的内容做了加密,并且指定用 AES256 解密,官方指定的解密方式如下: 2.导包 <!-- https://mvnrepository.com/ ...
- JEB动态调试解密数据包加密字段
0x00 场景 在测试某个app的时候,抓取数据包,发现某些参数存在被加密的情况,或者有签名校验的情况,这个时候如果我们想直接去篡改数据包的内容往往是做不到的,那就来看看抓取的某个app登录数据包,如 ...
- "解密"微信开放高级接口 企业如何应对
今天(2013年10月29日)腾讯终于对外公开了微信公众平台最新的接口,一石激起千层浪,对于很多微信公众平台的运营人员来说,今天是令人兴奋的一天!微信在向申请服务号的企业开发了大量接口.用户不想输入文 ...
- php AES cbc模式 pkcs7 128位加密解密(微信小程序)
PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...
- Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑
wget https://codeload.github.com/sqlcipher/sqlcipher/zip/v3.4.2 ./configure --enable-tempstore=yes C ...
- 微信小程序java8 java7 java6 encryptedData 解密 异常处理
使用java8 java7 java6 解密微信小程序encryptedData可以回遇到一些错误 1.java.security.NoSuchAlgorithmException: Cannot ...
- 小程序解密 encryptedData 获取 unionID 等信息
index.php <?php include_once "wxBizDataCrypt.php"; // $appid 由小程序微信官方后台获取 $appid = 'wx4 ...
- thinkphp微信开发:安全模式消息加解密
使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. TRight 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解 ...
随机推荐
- msfconlose基本命令
命令 简介 back 从当前上下文 banner 显示显示一个令人敬畏的metasploit横幅 cd 更改当前工作目录 color 切换颜色 connect 与主机通信 edit 使用$ VISUA ...
- Python学习笔记-基础1
一 初识Python python是一种面向对象.解释型的计算机程序语言.Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特 ...
- Hystrix 熔断机制
熔断机制相当于电路的跳闸功能,即在一定时间内,错误比例达到一定数目时业务从原来流程转移到另外的流程处理.在一段时间后,恢复到原业务逻辑. 测试代码如下 /** * @author zimu * @de ...
- Jenkins部分插件介绍
1.Join Plugin 功能介绍:这是一个触发job的插件,亮点在于它触发job的条件是等待当前job的所有下游job都完成才会发生. 例:假如A同时触发B1和B2两个下游job,然后配置这个插件 ...
- NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等
这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. 学习交流 移动端即时通讯学习交流: 21589 ...
- JMagic 操作 ImageMagick 处理图片
项目描述 imagemagick是功能强大的图片处理库,以稳定及高效率著称,众多语言对该库进行封装处理.比如php.java.由于我们是java项目,直接使用java通过JNI技术调用ImageMag ...
- 第89节:Java中的反射技术
第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...
- Java对象的克隆和深浅问题
Java实现克隆的方式 Java实现克隆的方式有如下两种, 推荐采用实现Cloneable接口的方式 实现Cloneable接口, 重写clone方法, 调用父类的clone方法 还有另一种方法, 不 ...
- MyBatis别名与util类技能了解
1.别名 在java中String类型就是String类型,但是在MyBatis中可不会识别java中的类型,在MyBatis中String类型的别名是'string',小写的String,或者也可以 ...
- HTML百宝箱(1从0开始)
标准格式(XHTML) l 元素必须正确嵌套 l 元素必须始终关闭 l 元素名和属性名必须小写 l 文档必须有且仅有一个根元素 l 属性值必须使用双引号括起来 l 声明文档为标 ...