码迷,mamicode.com
首页 > 编程语言 > 详细

参数签名ascii码排序的坑

时间:2017-03-30 21:53:35      阅读:570      评论:0      收藏:0      [点我收藏+]

标签:orderby   hash   ascii   com   system   pre   划线   strong   数字   

参数签名中通常是按键值对中键名称的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了

 

参数签名ascii码排序的坑

标签:orderby   hash   ascii   com   system   pre   划线   strong   数字   

原文地址:http://www.cnblogs.com/jiang_zheng/p/6648387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!