Java 加密算法

/**
     * 签名方法
     * 传参Values值ASCII排序拼接后缀加盐(123456) 进行MD5加密(字母小写)
     * 例如{"channel":"1","customerId":"1","signature":"56a0281fd65d73f05cedd7d94bb561ee"}
     * (signature值为11123456MD5加密(字母小写) )  
     *
     * @param parameters
     * @return
     */
    public static String createSign(SortedMap parameters, String key) {
        String characterEncoding = "UTF-8";
        StringBuffer sbKey = new StringBuffer();
        //所有参与传参的参数按照ASCII排序(升序)

        List> infoIds = new ArrayList>(parameters.entrySet());
        Collections.sort(infoIds, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                return (o1.getKey()).toString().compareTo(o2.getKey());
            }
        });


        Set es = parameters.entrySet();
        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)) {
                sbKey.append(v);
            }
        }
        sbKey = sbKey.append(key);
        //MD5加密,结果转换为小写字符
        String sign = MD5Util.MD5Encode(sbKey.toString(), characterEncoding).toLowerCase();
        return sign;
    }

你可能感兴趣的:(java,java,签名,算法)