zoukankan      html  css  js  c++  java
  • 微信小程序加密数据解密算法 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

  • 相关阅读:
    MySQL循环插入语法
    查看linux机子的配置
    extends与implements的不区别
    Git基本命令
    VirtualBox配置 以及文件传输
    zookeeper应用场景
    oracle学习
    linux学习
    Mysql优化
    线程3
  • 原文地址:https://www.cnblogs.com/qiujz/p/13207564.html
Copyright © 2011-2022 走看看