字典排序MD5生成代码
/*
 * Project: payment.framework
 *
 * File Created at 2017年12月23日
 *
 * Copyright 2016 CMCC Corporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * ZYHY Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license.
 */
package com.cmcc.hybj.payment.framework.https;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Set;
import java.util.TreeSet;
/**
 * @author gy
 * @Type Sign.java
 * @Desc 支付签名
 * @date 2017年12月23日 上午9:56:04
 */
public class Sign {
    private static Logger log = LoggerFactory.getLogger(Sign.class);
/**
     * // 服务器端生成签名
     *
     * @param map
     * @return
     */
    public static String buildSign(Hashtable<String, String> map) {
        Set<String> keys = new TreeSet<String>(new MyComparator());
        Enumeration<String> enumeration = map.keys();
        while (enumeration.hasMoreElements()) {
            String keyss = enumeration.nextElement();
            keys.add(keyss);
        }
        // 拼接有序的参数名-值串
        StringBuilder stringBuilder = new StringBuilder();
        for (String key : keys) {
            String value = map.get(key);
            if (value == null) {
                continue;
            } else if ("".equals(value.trim())) {
                continue;
            } else if ("sign".equals(key.trim())) {
                continue;
            } else {
                stringBuilder.append(key).append("=").append(value).append("&");
            }
        }
        String s = stringBuilder.toString();
        s = s.substring(0, s.length() - 1);
        log.info("排序后的参数 :" + s);
        return s;
    }
/**
     * 内部类
     *
     * @author gy
     */
    public static class MyComparator implements Comparator<String> {
@Override
        public int compare(String o1, String o2) {
return o1.compareTo(o2);// 升序排列
        }
}
}
/**
 * Revision history
 * -------------------------------------------------------------------------
 * <p>
 * Date Author Note
 * -------------------------------------------------------------------------
 * 2017年12月23日 Administrator creat
 */
字典排序MD5生成代码的更多相关文章
- 签名:实现参数字典排序,然后拼接为url参数形式
		
在很多地方请求参数需要做处理例如: 步骤 1.参数字典排序. 2.拼接字符. /// <summary> /// 生成签名 /// </summary> /// <par ...
 - python进阶--字典排序
		
zip()函数 sorted() 要求对字典中,按值的大小排序 解决方案: 利用zip函数 zip函数介绍: zip函数可以将可迭代对象打包成一个个元组,在python3中返回一个对象,在python ...
 - mybatis Generator生成代码及使用方式
		
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...
 - Python实现各种排序算法的代码示例总结
		
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
 - yii2使用Gii生成代码
		
本章节将介绍怎样使用 Gii 去自己主动生成 Web 网站经常使用功能的代码.使用 Gii 生成代码很easy,仅仅要依照 Gii 页面上的介绍输入正确的信息就可以. 贯穿本章节,你将会学到: 在你的 ...
 - 经常使用MD5算法代码
		
经常使用的MD5算法代码日期: 2014年8月4日作者: 铁锚 MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请參考 维基百科:MD5 MD5加密后 ...
 - python之gui-tkinter可视化编辑界面 自动生成代码
		
首先提供资源链接 http://pan.baidu.com/s/1kVLOrIn#list/path=%2F
 - T4模板生成代码。 数据实体层与数据仓储层。备注
		
文件生成模板:TempleteManager.ttinclude <#@ assembly name="System.Core" #><#@ assembly n ...
 - java的字典排序
		
按照教程上的代码还是报错 应该是字典排序的问题,不能是Arrays.sort()
 
随机推荐
- 【oracle】定时任务
			
--创建定时任务-------------------------------------------------------------------------------------------- ...
 - postfix发邮件失败,日志和postqueue -p提示No route to host
			
1. 防火墙未放行相关端口 2
 - django ORM CRUD
			
一.增加数据-Create 1.类名.objects.create(属性=值,属性=值) Myomodel.objects.create(name=) 2.d={"属性":&quo ...
 - Linux提高工作效率的命令
			
find ./ -name 'laun*'|xargs grep 8881 在laun开头的文件内查找8881 find ./ -name 'laun*' find . -type f -mtime ...
 - web服务本质
			
目录 django 框架引入: web框架本质 HTTP协议 多功能web服务 封装,分发处理 django 框架引入: web框架本质 web框架本质: 软件开发架构: c / s ; b/ s - ...
 - C语言实现Linux之ls
			
ls命令用来显示目标列表. 常用参数: -l :以长格式显示目录下的内容列表.输出信息从左向右依次包括文件名,文件类型,权限模式,硬连接数,所有者.组.文件大小和文件的最后修改时间等: -a ...
 - nginx 动静分离之 tomcat
			
配置文件示例 server { listen ; server_name www.xxx.com; location ~* "\.(jpg|png|jepg|js|css|xml|bmp|s ...
 - leetcode 763. 划分字母区间
			
题目描述: 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段.返回一个表示每个字符串片段的长度的列表. 示例 1: 输入: S = "a ...
 - EmotiW 历年竞赛冠军数据及论文信息
			
date Baseline paper Champion paper Model & Feature Test_acc 2013 [1] [2] EmoNets 41.03 2014 [3] ...
 - 利用docker实现私有镜像仓库
			
利用docker实现私有镜像仓库 在linux服务器上安装了docker过后,可以拉取docker镜像仓库: docker pull registry 再执行命令让镜像run起来: docker ru ...