zoukankan      html  css  js  c++  java
  • 字典排序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
     */

  • 相关阅读:
    数据可视化 —— 数据流图(Data Flow Diagram)
    TensorFlow 实战(四)—— tensor 的认识
    数据集(benchmark)、常用数据集的解析(cifar-10、)
    HDU--杭电--4504--威威猫系列故事——篮球梦--DP
    android打包apk时混淆遇到的问题
    C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
    按 Eclipse 开发喜好重新布置 cocos2dx 目录层次
    HDU--杭电--4502--吉哥系列故事——临时工计划--背包--01背包
    (step6.3.2)hdu 1068(Girls and Boys——二分图的最大独立集)
    flashcache中应用device mapper机制
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8308436.html
Copyright © 2011-2022 走看看