ASCII码从小到大排序(字典序)
签名生成的通用步骤如下:
设所有发送或者接收到的数据为集合M,将集合M内的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则: ◆ 按参数名字母(ASCII码)从小到大排序(字典序); ◆ 参数名区分大小写; ◆ 系统参数和业务参数全部参与签名 ◆ 服务端验证签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5加密,再将得到的字符串所有字符转换为大写,得到sign值signValue。
假设key为ddea9415a19c57735f1299bc6908cd81,传送的参数如下: terminalno:123456 datetime:2018-01-01 10:00:00 param_a:aaa param_b:bbb
第一步:对参数按照参数名ASCII字典序排序,参数名和参数值以key=value的格式,去空格并用符号“&”拼接如下: datetime=2018-01-01 10:00:00¶m_a=aaa¶m_b=bbb&terminalno=123456
第二步:拼接密钥: datetime=2018-01-0110:00:00¶m_a=aaa¶m_b=bbb&terminalno=123456ddea9415a19c57735f1299bc6908cd81
第三步:对拼接后的字符串MD5运算并转换成大写得到结果: 961985362EBC550FC52C051C7BC2C7EC
/*** MD5加密* @param map* @param keys* @return*/
private String createSign(Map<String, String> map,String keys){String sign = "";try {List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(map.entrySet());// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)infoIds.sort(new Comparator<Map.Entry<String, String>>() {public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {return (o1.getKey()).compareTo(o2.getKey());}});// 构造签名键值对的格式StringBuilder sb = new StringBuilder();for (Map.Entry<String, String> item : infoIds) {if (item.getKey() != null || item.getKey() != "") {String key = item.getKey();String val = item.getValue();if (!(val == "" || val == null)) {sb.append(key + "=" + val + "&");}}}String msg = sb.substring(0,sb.length()-1).toString()+keys;//sb.substring(0,sb.length()-1).toString():截取最后一个&//String result = (sb.toString().length()-1)+keys;log.info("================accsii排序==============="+msg);sign = MD5Util.entype(msg).toUpperCase();//MD5加密,toUpperCase():大小写转换log.info("================signMD5加密==============="+sign);} catch (Exception e) {return null;}return sign;
}
关于ASCII码排序(字典序)排序问题,这个根据那你们的项目对接需要,我采用的是倒序排序;
ASCII码从小到大排序(字典序)相关推荐
- acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
以下代码:将传参按照ASCII 码字典序排序,并将生成的字符串进行MD5加密 /** * Description:MD5工具生成token * @param value * @return */ pu ...
- 微信字典排序java_【支付宝,微信支付必备】Java实现url参数按照参数名ASCII码从小到大排序(字典序)...
/** * * 方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串 * 实现步骤: * * @param paraMap 要排序的Map对象 * @pa ...
- C# 参数按照ASCII码从小到大排序(字典序)
在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序.如下: public static void requestPay(){Dictionary<string, string& ...
- PHP 参数名ASCII码从小到大排序(字典序)
function ASCII($params = array()){//ksort()对数组按照键名进行升序排序ksort($params);//reset()内部指针指向数组中的第一个元素reset ...
- java ascii码从小到大排序_待签名参数按照字段名的ascii码从小到大排序 怎么理解...
展开全部 private String getSign(Map params) { Map sortMap = new TreeMap(); sortMap.putAll(params); // 以k ...
- c语言中字符如何转数字排序,常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字。对..,(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺...
导航:网站首页 > 常用字符的ASCII码值从小到大的排列规律是:空格.阿拉伯数字.对..,(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺 常用字符的ASCII码值从小到大的排列规 ...
- c语言字母从小到大,C语言编程:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。...
ASCII码从小到大的顺序输出这三个字符的源代码如下: #include< stdio.h> void main() { char a,s,c; char max,min; printf( ...
- python对字符串按照ascII码顺序排序
直接使用sorted函数进行排序 sorted(item) #item为一个字符串
- ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用
参考 iOS-谓词的使用详解 NSPredicate 谓词 NSPredicate A definition of logical conditions used to constrain a sea ...
最新文章
- 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
- 谈谈document.ready和window.onload的区别
- WebStorm荣获InfoWorld2014年度科技奖
- Aidl进程间通信详细介绍
- deepin/ubuntu安装苹方字体
- nginx做透明代理
- 手写一个简单的WinForm程序(2)
- oracle Blob保存方式,关于文件保存到Oracle中BLOB字段的方法及例子
- 炫酷科技感超前的电子产品发布广告海报psd分层模板,带给你炫酷的未来感
- postman如何改成中文版_在 Windows 上如何用 Postman 重现 Dubbo 反序列化漏洞
- 推荐 | 自然语言处理、计算机视觉等机器学习实战项目练手平台
- Spring2.5注解事务配置
- dnf搬砖代码Python_dnf自动搬砖脚本怎么写宝app
- PHP8.0尝鲜系列(一):Windows 10安装PHP8.0
- VMware Workstation 英文改中文界面
- 荒野行动pc版显示连接不到服务器,荒野行动PC版连接不上服务器怎么办 进不去游戏...
- MMORPG传奇类手游《空空西游》完整源码(客户端cocos2d-js+服务端pomelo+cocosStudio工程+搭建教程)
- mysql的to char data_数据库中的to char
- Android 第三方SDK的检测与提取
- MySQL的下载与安装详细教程
热门文章
- Java与XML编程之SAX
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)
- MongoDB - 分片管理
- 基于WebMatrix的轻量级Web开发系列课程
- 多项式加减 List
- MQTT工作笔记0009---订阅主题和订阅确认
- SpringCloud工作笔记053---SLF4J简介与使用(整合log4j_并切换logging)
- maven异常001---报错The folder is already a source folder.的解决办法
- C++读取Json生成随机名字
- VC++ 6.0的一些使用技巧---IDE的使用