微信小程序加密数据解密算法 C#

获取用户头像、昵称、手机号等授权信息,需解密

C# 微信小程序加密数据解密算法

 1         /// <summary>
 2         /// 微信小程序解密算法
 3         /// </summary>
 4         /// <param name="encryptedData">加密数据</param>
 5         /// <param name="iv">初始向量</param>
 6         /// <param name="sessionKey">从服务端获取的SessionKey</param>
 7         /// <returns></returns>
 8         public string Decrypt(string encryptedData, string iv, string sessionKey)
 9         {
10             try
11             {
12                 //创建解密器生成工具实例
13                 AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
14                 //设置解密器参数
15                 aes.Mode = CipherMode.CBC;
16                 aes.BlockSize = 128;
17                 aes.Padding = PaddingMode.PKCS7;
18                 //格式化待处理字符串
19                 byte[] byte_encryptedData = Convert.FromBase64String(encryptedData);
20                 byte[] byte_iv = Convert.FromBase64String(iv);
21                 byte[] byte_sessionKey = Convert.FromBase64String(sessionKey);
22 
23                 aes.IV = byte_iv;
24                 aes.Key = byte_sessionKey;
25                 //根据设置好的数据生成解密器实例
26                 ICryptoTransform transform = aes.CreateDecryptor();
27 
28                 //解密
29                 byte[] final = transform.TransformFinalBlock(byte_encryptedData, 0, byte_encryptedData.Length);
30                 //生成结果
31                 string result = Encoding.UTF8.GetString(final);
32                 return result;
33             }
34             catch (Exception ex)
35             {
36                 //LogHelper.Error(ex, "SnsProcessing", "Decrypt");
37             }
38             return string.Empty;
39         }

以下情况,有可能导致解密失效:

1、短时间的多次 wx.login

2、授权回调里,又再次 wx.login

也就是,没事不要瞎调用 wx.login