手机版

微信AES-128-CBC加密数据的C#解密

时间:2021-12-19 来源:互联网 编辑:宝哥软件园 浏览:

小程序登录后会得到用户的信息,这只是一个昵称,不能作为ID。有用数据加密,腾讯给出解密方法:

加密数据解密算法

如果接口涉及敏感数据(如wx.getUserInfo中的openId和unionId),接口的明文内容将不会包含这些敏感数据。如果开发人员需要获取敏感数据,他们需要对接口返回的encryptedData进行对称解密。解密算法如下:

用于对称解密的算法是AES-128-CBC,数据用PKCS#7填充。对称解密的目标密文为Base64_Decode(encryptedData),对称解密密钥Aeskey=Base64 _ Decode(session _ key),Aeskey为16字节对称解密算法。初始向量iv将在数据接口中返回。

微信官方提供各种编程语言的样例代码(点击下载)。每种语言类型的接口名称都相同。调用方法可以参考示例。

下载示例代码,没有C#,只有C,nodejs,python,php,一下子就撞大了。在网上找C#的AES-128-CBC算法,没有一个好用的。下载了很久,调整不了。看看nodejs和python的代码,简单到让人觉得恐怖,突然我的信心又被打击了。

C#实现微信AES-128-CBC加密数据的解密(图1)

想一想,如果不值得单独拿nodejs或者python去解密,那就咬牙继续研究下解密吧。Net,最有用的一个来自csdn,感谢作者。

但是还是不能正常使用。分析原因与转码有关。在微信示例中,base64用于存储密文、密钥和向量,但在C#示例中,使用了utf8。经过一番痛苦的调试,终于尘埃落定,直接粘贴使用过的代码:

呼叫代码:

版权声明:微信AES-128-CBC加密数据的C#解密是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。