public static void main(String[] args) {
SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();
//String mfrchant_id="fffff";
String merchant_id="190010002";
String business_type="1005";
String out_trade_no="1400000001";
String key="3A4BC4A4000CF1B5FFA9E351E6C1539E";
//parameters.put("mfrchant_id", mfrchant_id);
parameters.put("merchant_id", merchant_id);
parameters.put("business_type", business_type);
parameters.put("out_trade_no",out_trade_no);
String characterEncoding = "UTF-8"; //指定字符集UTF-8
String mySign = createSign(characterEncoding,parameters,key);
//System.out.println("我 的签名是:"+mySign);
}
public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters,String key){
StringBuffer sb = new StringBuffer();
StringBuffer sbkey = new StringBuffer();
Set es = parameters.entrySet(); //所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
//空值不传递,不参与签名组串
if(null != v && !"".equals(v)) {
sb.append(k + "=" + v + "&");
sbkey.append(k + "=" + v + "&");
}
}
//System.out.println("字符串:"+sb.toString());
sbkey=sbkey.append("key="+key);
System.out.println("字符串:"+sbkey.toString());
//MD5加密,结果转换为大写字符
String sign = MD5Util.MD5Encode(sbkey.toString(), characterEncoding).toUpperCase();
System.out.println("MD5加密值:"+sign);
return sb.toString()+"sign="+sign;
}
/*
---------------------
作者:chenghaibing2008
来源:CSDN
原文:https://blog.csdn.net/chenghaibing2008/article/details/79701773
版权声明:本文为博主原创文章,转载请附上博文链接!
签名生成 参数名ASCII码从小到大排序
*/
分享到:
相关推荐
在Java编程中,有时我们需要对一组参数按照字典顺序(ASCII码值从小到大)进行排序,例如在创建签名或构建URL查询字符串时。这里提供了一个名为`createSign`的方法,它接受一个`Map, Object>`类型的参数,并返回一个...
比如在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序。 2、文章: https://blog.csdn.net/z929118967/article/details/108195721 3、【可选】针对签名数组ASCII码排序进行优化(先按照数组元素的...
C# 参数按照 ASCII 码从小到大排序(字典序) C# 参数按照 ASCII 码从小到大排序(字典序)是一种常用的排序方法,特别是在对接第三方支付的时候非常有用。下面是对该方法的详细介绍: 首先,我们需要了解什么是 ...
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
将map按ASCII码排序,适用于将请求头的参数转为map,map内可再含有map,递归排序,无遗漏。运行demo里main方法即可进行验证。
按各字符的ASCII码从小到大的顺序输出这三个字符的C语言程序
在本例中,排序的目标是字符串中的字符,因此是按照ASCII码值从小到大排序。代码中使用了两层嵌套循环,外层循环遍历整个字符串,内层循环用于比较相邻的字符并进行必要的交换。 代码中的关键部分如下: 1. `for(p...
### ASCII码表及扩展ASCII码表 #### 一、ASCII码简介 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的一套电脑编码系统,最初被设计为7位的编码,用于...
在嵌入式系统开发中,尤其是在使用STM32微控制器的项目中,有时我们需要处理文本显示,这可能涉及到汉字和ASCII码的取模工作。取模是将字符转化为点阵图形的过程,以便在显示屏上正确地呈现出来。针对3.12英寸OLED...
在中文环境中,汉字编码通常涉及到多种标准,如GBK、GB2312、UTF-8等,而ASCII码则主要用于表示英文字符。易语言作为一款中国本土的编程语言,提供了解决汉字与ASCII码之间转换的功能。本节将详细探讨易语言中的汉字...
此外,ASCII码在处理用户输入、生成输出以及在网络上传输文本数据时也起到关键作用。 5. 扩展ASCII码:标准ASCII码只能表示128个字符,对于其他语言或特殊字符(如希腊字母、汉字等)就无法覆盖。因此,很多系统...
例如,使用 Array.Sort() 方法时,可以传入 string.CompareOrdinal 作为参数,以实现按照 ASCII 码的排序。 例如: ```csharp string[] vv = { "1", "2", "A", "a", "B", "b" }; Array.Sort(vv, string....
ASCII码的范围从0到127,其中第一个字符是NUL(空字符),最后一个字符是DEL。 在计算机科学中,ASCII码的转换是非常常见的操作,尤其是在处理文本数据时。例如,当你需要将一个字符转换成其对应的16进制表示时,这...
### 基本ASCII码及键盘ASCII码表详解 #### 一、ASCII码简介 **ASCII**(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的一套电脑编码系统,最初被设计为7位的...
ASCII码的核心在于它的7位二进制表示,每个字符用一个7位的二进制数来表示,范围是从0000000(十进制0)到1111111(十进制127)。这些编码被分配给不同的字符,其中0100000(十进制32)至0111110(十进制126)的编码...
在ASCII码表中,字符按照编码从小到大排列,这128个字符可以分为几个主要的类别: 1. 控制字符:这部分包含ASCII码表的前32个字符(0-31)以及第127个字符,它们代表了计算机通信中的一些控制信号,如回车(CR)、...
3. 大小写处理:因为16进制数与ASCII码的大小写有对应关系,工具可能提供了大小写的转换选项。 4. 批量转换:对于大量16进制数据,工具可能支持批量转换,提高工作效率。 5. 错误检查:工具可能会检查输入的16进制...
在VB(Visual Basic)编程环境中,ASCII码的转换是一个常见的任务,涉及到字符和它们对应的数值之间的相互转换。ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁...
这段代码会创建一个名为`ASCIITest.txt`的文件,其中包含从空格(ASCII码32)到波浪号(ASCII码126)的所有字符及其对应的ASCII码值。每个条目都以“ASCII码:”和“字符:”的形式分隔开,方便阅读。 在实际应用中,...