分享

签名-Md5加密

 樱花梦_张艺馨 2021-12-18

package com.zx.com.cn.dao;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.codec.digest.DigestUtils;

/**

 * 签名

 * 使用appSecret+data数据+appSecret进行MD5+base64签名,然后对签名结果转大写,最后对转化后的签名数据使用utf-8 字符集urlEncoding。

 * 要发送的XML内容为 test,appSecret为 12345678,则data_digest 生成过程如下:

1.先对12345678test12345678这个串先进行MD5加密,得到:a6fa71c02a94a7627d895057a1ec8655

2.然后base64签名,得到:YTZmYTcxYzAyYTk0YTc2MjdkODk1MDU3YTFlYzg2NTU=

3.签名结果转大写得到:YTZMYTCXYZAYYTK0YTC2MJDKODK1MDU3YTFLYZG2NTU=,对转换后的签名结果使用utf-8 urlEncoding 得到最终签名据:YTZMYTCXYZAYYTK0YTC2MJDKODK1MDU3YTFLYZG2NTU%3D

 * @author admin

 *

 */

public class MD5Base64Util {

//使用utf-8字符集

protected static String ENCODE = "UTF-8";

/**

*  生成签名sign-1

* @param bizData  data数据

* @param appSecret 固定字符串 例如:12345678

* @return

*/

    public String makeSign_one(String bizData, String appSecret) {

    //签名格式:appSecret+data数据+appSecret

        String data = appSecret + bizData + appSecret;

        System.out.println("要加密在数据:"+data);

        String sign="";

        try {

        String md5str = DigestUtils.md5Hex(data);

    System.out.println("MD5加密后的字符串为:" + md5str);

    String md_base64 = Base64.encodeBase64String(md5str.getBytes());

    System.out.println("base64后在数据:"+md_base64);

            //将base64字符串转大写

            String strUp = md_base64.toUpperCase();

            System.out.println("字符串转大写:"+strUp);

            //以UTF-8的编码生成字符串

            sign = URLEncoder.encode(new String(strUp.getBytes(), ENCODE), ENCODE);

            System.out.println("最终的数据:"+sign);

        } catch (Exception e) {

            e.printStackTrace();

            return null;

        }

        return sign;

    }

    /**

*  生成签名sign-2

* @param bizData  data数据

* @return

*/

    public String makeSign_Two(String bizData) {

    String appSecret="12345678";

    //签名格式:appSecret+data数据+appSecret

        String data = appSecret + bizData + appSecret;

        System.out.println("要加密在数据:"+data);

        String sign="";

        try {

        String md5str = DigestUtils.md5Hex(data);

    System.out.println("MD5加密后的字符串为:" + md5str);

    String md_base64 = Base64.encodeBase64String(md5str.getBytes());

    System.out.println("base64后在数据:"+md_base64);

            //将base64字符串转大写

            String strUp = md_base64.toUpperCase();

            System.out.println("字符串转大写:"+strUp);

            //以UTF-8的编码生成字符串

            sign = URLEncoder.encode(new String(strUp.getBytes(), ENCODE), ENCODE);

            System.out.println("最终的数据:"+sign);

        } catch ( UnsupportedEncodingException e) {

            e.printStackTrace();

            return null;

        }

        return sign;

    }

    //主入口

public static void main(String[] args) {

MD5Base64Util mD5Base64 =new MD5Base64Util();

String sign = mD5Base64.makeSign_one("test", "12345678");

System.out.println(sign);

}

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多