参考链接:https://www.cnblogs.com/jetz/p/6384809.html

我写了一个工具方法,直接照搬链接中的方法,还有一个工具类。

  1. public class Encrypt
  2. {
  3. #region SHA1解密
  4.  
  5. /// <summary>
  6. /// 解密小程序的encryptedData
  7. /// </summary>
  8. /// <param name="encryptedData">加密的信息</param>
  9. /// <param name="sessionKey">key</param>
  10. /// <param name="iv">加密算法的初始向量</param>
  11. public static WxPhoneModel DescodeWxSHA1(string encryptedData, string sessionKey, string iv)
  12. {
  13. WxPhoneModel model = null;
  14. var res = AESDecrypt(encryptedData, sessionKey, iv);// {"phoneNumber":"152XXXX9583","purePhoneNumber":"1525XXXX3","countryCode":"86","watermark":{"timestamp":1525829586,"appid":"wx38XXXXXXXX43"}} 
  1. if (!string.IsNullOrEmpty(res))
  2. {
  3. model = JObject.Parse(res).ToObject<WxPhoneModel>();
  4. }
  5. return model;
  6. }
  7.  
  8. public static string AESDecrypt(string encryptedData, string sessionKey, string iv)
  9. {
  10. try
  11. {
  12. //16进制数据转换成byte
  13. var encryptedDataByte = Convert.FromBase64String(encryptedData); // strToToHexByte(text);
  14. var rijndaelCipher = new RijndaelManaged
  15. {
  16. Key = Convert.FromBase64String(sessionKey),
  17. IV = Convert.FromBase64String(iv),
  18. Mode = CipherMode.CBC,
  19. Padding = PaddingMode.PKCS7
  20. };
  21.  
  22. var transform = rijndaelCipher.CreateDecryptor();
  23. var plainText = transform.TransformFinalBlock(encryptedDataByte, , encryptedDataByte.Length);
  24. var result = Encoding.Default.GetString(plainText);
  25.  
  26. return result;
  27. }
  28. catch (Exception ex)
  29. {
  30. return null;
  31.  
  32. }
  33. }
  34.  
  35. #endregion
  36. }
  37. public class WxPhoneModel
  38. {
  39. /// <summary>
  40. /// 用户绑定的手机号(国外手机号会有区号)
  41. /// </summary>
  42. public string PhoneNumber { set; get; }
  43.  
  44. /// <summary>
  45. /// 没有区号的手机号
  46. /// </summary>
  47. public string PurePhoneNumber { set; get; }
  48.  
  49. /// <summary>
  50. /// 区号
  51. /// </summary>
  52. public string CountryCode { set; get; }
  53.  
  54. /// <summary>
  55. /// 水印
  56. /// </summary>
  57. public WaterMarkModel WaterMark { set; get; }
  58. }
  59.  
  60. public class WaterMarkModel
  61. {
  62. /// <summary>
  63. /// appid
  64. /// </summary>
  65. public string AppId { set; get; }
  66.  
  67. /// <summary>
  68. /// 时间戳
  69. /// </summary>
  70. public string TimeStamp { set; get; }
  71. }

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. EBS五种安全性屏蔽解析

    http://blog.11equals3.top/2018/02/09/190/ 分类帐集 定义: 分类帐集顾名思义就是分类账的集合.它是总帐提供的将相同科目表和相同日历的多个分类帐集合一起用于多分 ...

  2. Delphi Excel导入 的通用程序

    步骤: 1 连excel(自己知道其格式,最好是没个字段在数据一一对应) 2 读excel数据,填入到数据库 我这里有个函数,实现把excel表格中数据导入数据库,在一条数据导入前判断数据库中是否有该 ...

  3. centos7安装git踩坑记

    之前自己是按照Git 服务器搭建这篇博客来安装git服务器的,一步步顺序下来,但git clone的时候,每次都要求输入密码.说好的SSH免密登录呢.前后搞了一天多才搞定,现在记录下踩过的坑. 坑1: ...

  4. Android使用ViewPager+PhotoView实现图片查看器

    可实现功能效果说明: 可实现多张图片点击放大,手指控制,左右滑动,多张图片点击任意位置定位显示任意位置图片:无动画,可自己加 效果图:                             核心代码 ...

  5. 来啊踩fastjson打印入参导致业务跑偏的坑

    线上代码对日志的记录,重要性自不必说.但是怎样记录日志也是有讲究的! 日志可以直接在每个方法中进行日志记录,优点是想怎么记就怎么记,缺点是记日志的代码可能会超过你的业务代码,可读性急剧下降,这也是日志 ...

  6. Matplotlib 使用 - 《Python 数据科学手册》学习笔记

    一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...

  7. 神经网络架构PYTORCH-宏观分析

    基本概念和功能: PyTorch是一个能够提供两种高级功能的python开发包,这两种高级功能分别是: 使用GPU做加速的矢量计算 具有自动重放功能的深度神经网络从细的粒度来分,PyTorch是一个包 ...

  8. Python - 安装并配置Anaconda环境

    1- 简介 官网:https://www.anaconda.com/ Anaconda是一个用于科学计算的Python发行版,适用于数据分析的Python工具,也可以用在大数据和人工智能领域. 支持 ...

  9. MYSQL服务器系统变量

    一:查看服务所有变量 MySQL服务器维护许多配置其操作的系统变量.每个系统变量都有一个默认值.可以使用命令行或选项文件中的选项在服务器启动时设置系统变量.其中大多数都可以在运行时使用动态更改 SET ...

  10. Python 中的object takes no parameters错误

    Python是一门面向对象的语言,中我们首先创建一个类: class Student(object): def _init_(self,name,score): self.name = name se ...