zoukankan      html  css  js  c++  java
  • 参数签名ascii码排序的坑

    参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串。不要直接使用 SortedDictionary<string, string> 有坑的,他是按数字、小写字母、大写字母的顺序排的,实际规则应该是数字、大写字母、小写字母的顺序来排才对。一直使用他在支付宝和微信的接口中都没问题,因为支付宝和微信的单词是用下划线分隔的,今天接入的一家支付公司用的驼峰命名法坑就出现了。正确的打开姿势如下:

    /// <summary>
    /// ASCII值排序
    /// </summary>
    public class OrdinalComparer : System.Collections.Generic.IComparer<String>
    {
        public int Compare(String x, String y)
        {
            return string.CompareOrdinal(x, y);
        }
    }
    
    
    
    //使用
    //SortedDictionary<string, string> sDic 待排序的键值对
    
    var sArr = sDic.OrderBy(x => x.Key, new OrdinalComparer()).ToDictionary(x => x.Key, y => y.Value);
    //然后 foreach sArr 就OK了
  • 相关阅读:
    BZOJ2456
    BZOJ2648
    POJ1639
    LOJ6003
    LOJ6002
    LOJ6001
    LOJ116
    POJ2594
    BZOJ4554
    JS事件 加载事件(onload)注意:1. 加载页面时,触发onload事件,事件写在<body>标签内。 2. 此节的加载页面,可理解为打开一个新页面时。
  • 原文地址:https://www.cnblogs.com/jiang_zheng/p/6648387.html
Copyright © 2011-2022 走看看