蓝色天空

走在IT的路上,随时需要抬头看看天空
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

支付宝支付参数MD5签名

Posted on 2016-10-18 14:37  my_house_station  阅读(2426)  评论(0编辑  收藏  举报
    protected String signMD5(List<String> paramNames, String key, String charset)
            throws UnsupportedEncodingException {
        if (key == null)
            throw (new IllegalArgumentException(
                    "No KEY, no sign. Please check your configuration."));

        StringBuilder sb = new StringBuilder().append(
                this.toQueryString(paramNames)).append(key);

        String sign = CryptoUtil.byteToHex(CryptoUtil.MD5Digest(sb.toString()
                .getBytes(charset)));

        return (sign);
    }

protected String toQueryString(List<String> paramNames) {
        URLBuilder ub = new URLBuilder();

        for (String key : paramNames)
            ub.appendParam(key, this.getProperty(key));

        return (ub.toString());
    }

public URLBuilder appendParam(String key, String value) {
        if (key != null && value != null) {
            this.appendParamPrefix();
            this.builder.append(key).append('=');
            this.builder.append(value);
        }

        return (this);
    }
    public static String byteToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder(bytes.length * 2);

        for (int i = 0; i < bytes.length; i++)
            sb.append(String.format("%02x", bytes[i] & 0xff));

        return (sb.toString());
    }
    public static byte[] MD5Digest(byte[] in) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");

            byte[] out = md.digest(in);

            return (out);
        } catch (NoSuchAlgorithmException ex) {
            // never occur
            ex.printStackTrace();
            return (null);
        }
    }