• 键值对排序并MD5加密


    public static class CreateSign
    {
    public static string SignTopRequest(IDictionary<string, string> parameters, string secret)
    {
    return SignTopRequest(parameters, secret, true);
    }
    public static string SignTopRequest(IDictionary<string, string> parameters, string secret, bool qhs)
    {
    // 第一步:把字典按Key的字母顺序排序
    IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters);
    IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();

    // 第二步:把所有参数名和参数值串在一起
    StringBuilder query = new StringBuilder(secret);
    while (dem.MoveNext())
    {
    string key = dem.Current.Key;
    string value = dem.Current.Value;
    if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
    {
    query.Append(key).Append(value);
    }
    }
    if (qhs)
    {
    query.Append(secret);
    }

    // 第三步:使用MD5加密
    MD5 md5 = MD5.Create();
    byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));

    // 第四步:把二进制转化为大写的十六进制
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < bytes.Length; i++)
    {
    string hex = bytes[i].ToString("X");
    if (hex.Length == 1)
    {
    result.Append("0");
    }
    result.Append(hex);
    }

    return result.ToString();
    }

  • 相关阅读:
    自考 exec 7 3
    画函数图像
    Exec68
    applet main共存 五角星和五面形
    jcheckbox 用例
    JList 单击 ,双击例
    web性能优化(一)弱请求处理
    web性能优化(二)优化思维图
    算法之道左右旋转字符串
    腾讯微信面试题实现时间复杂度为O(1)的栈 20130226
  • 原文地址:https://www.cnblogs.com/xiguanjiandan/p/2729511.html
Copyright © 2020-2023  润新知