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
     */

  • 相关阅读:
    Google快照查看八大绝招[小摘]
    CSS li或dd 浮动后增加图片时多出4PX问题
    ASP.NET C# 邮件发送全解
    ff ie7 ie6 css支持问题[拼网页标记]
    net 中 等同与ajax的效果 ICallbackEventHandler
    让DIV层位于flash对象之上
    屏蔽JS错误代码
    META标签的使用摘录,网页跳转特效
    【转】海量数据处理常用思路和方法
    MFC画图定时刷新,能否做到完全无闪烁
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8308436.html
Copyright © 2011-2022 走看看