参考链接: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字段的更多相关文章

  1. 解密微信sqlite数据库

    最近在研究解密微信APP的数据库, 1.通过Android手机内置备份功能,可以获取到微信的数据库文件,再通过adb传到电脑上. 2.获取微信EnMicroMsg.db库的密码(通过IMEI和uin值 ...

  2. java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口指定解密方式

    1.场景 在做微信支付退款通知接口时,微信对通知的内容做了加密,并且指定用 AES256 解密,官方指定的解密方式如下: 2.导包 <!-- https://mvnrepository.com/ ...

  3. JEB动态调试解密数据包加密字段

    0x00 场景 在测试某个app的时候,抓取数据包,发现某些参数存在被加密的情况,或者有签名校验的情况,这个时候如果我们想直接去篡改数据包的内容往往是做不到的,那就来看看抓取的某个app登录数据包,如 ...

  4. "解密"微信开放高级接口 企业如何应对

    今天(2013年10月29日)腾讯终于对外公开了微信公众平台最新的接口,一石激起千层浪,对于很多微信公众平台的运营人员来说,今天是令人兴奋的一天!微信在向申请服务号的企业开发了大量接口.用户不想输入文 ...

  5. php AES cbc模式 pkcs7 128位加密解密(微信小程序)

    PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...

  6. Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑

    wget https://codeload.github.com/sqlcipher/sqlcipher/zip/v3.4.2 ./configure --enable-tempstore=yes C ...

  7. 微信小程序java8 java7 java6 encryptedData 解密 异常处理

    使用java8 java7  java6 解密微信小程序encryptedData可以回遇到一些错误 1.java.security.NoSuchAlgorithmException: Cannot ...

  8. 小程序解密 encryptedData 获取 unionID 等信息

    index.php <?php include_once "wxBizDataCrypt.php"; // $appid 由小程序微信官方后台获取 $appid = 'wx4 ...

  9. thinkphp微信开发:安全模式消息加解密

    使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. TRight 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解 ...

随机推荐

  1. ajax提交数组至后台,无法获取值得问题

    $(".delAll_btn").click(function(){ var checkStatus = table.checkStatus('userList'), data = ...

  2. Spring使用Autowiring自动装配 解决提示报错小技巧

    1.打开Settings   输入Inspections  找到Spring --> Spring Core --> Code --> Autowiring  for  Bean  ...

  3. 性能测试---CPU内存部分

    CPU内存的测试可以通过top命令来测试 ,如下是我写的bat脚本,其中的测试进程可以替换为你自己需要测试的进程. @echo offecho============================= ...

  4. android 图片内存管理

    图片对象: drawable bitmap etc.图片对象在Android上该缓存吗?什么时候缓存?怎么缓存?缓存后使用时怎么取出?怎么销毁?什么时候销毁? bitmap对象(new出来的) :需要 ...

  5. java.lang.OutOfMemoryError: PermGen space (jvm内存泄漏解决办法)

    2.在myeclipse根目录 打开myeclipse.ini 3.在myeclipse中配置内存

  6. Spring-Data-Jpa环境配置与实际应用

    上次我们讲述了<Spring-Data-Jpa概述与接口>,接下来我们再讲讲Spring-Data-Jpa环境配置与实际应用. Spring-Data 方法定义规范与使用配置 简单条件查询 ...

  7. Python学习笔记【第十篇】:Python面向对象进阶

    保护对象的属性 如果有一个对象,当需要对其进行修改属性时,有2种方法 对象名.属性名 = 数据 ---->直接修改 对象名.方法名() ---->间接修改 为了更好的保存属性安全,即不能随 ...

  8. Kali学习笔记6:二层发现

    先介绍下ARPING命令: arping命令是用于发送ARP请求到一个相邻主机的工具 arping使用arp数据包,通过PING命令检查设备上的硬件地址.能够测试一个IP地址是否是在网络上已经被使用, ...

  9. g++编译的makefile模板库和脚本

    编译C++文件,特别是多文件的时候,经常要找模板,这里为了后面方便,就自己做了一个模板. makefile模板:Makefile # Object files to either reference ...

  10. 爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 爬虫的本质就是一段自动抓取互联网信息的程序,从网络获取 ...