获取用户头像、昵称、手机号等授权信息,需解密
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