獲取用戶頭像、昵稱、手機號等授權信息,需解密
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