base64加密和MD5加密

文章目录


今天项目开发遇到了一个需要加密的需求,其加密方式大概为将请求的json串的所有字符按照升序从新排列,再将秘钥放拼接在排序后的字符串头,然后进行md5(32位)加密再转成小写即获得参数签名结果sign值。最后把sing值拼接在请求json前,进行base64加密后就为最后的请求参数

示例

1.josn串:
{"source":"1","version":"2.0","idently_id":" CMV14223786","data":{}}
2.排序后:
"""""""""""""",,,.01122234678::::CMV_aacdddeeeiiilnnoorrssttuvy{{}}
3.sign为:
sign = downcase(md5(secretKey+排序后json))
4.最后request为:
req=base64(sign + 排序前json串)

代码

base64和md5都是使用jdk自带api
1.排序:

private String sortJson(String json) {
        char[] chars = json.toCharArray();
        Arrays.sort(chars);
        return  new String(chars);
    }

2.签名:

    public String sign(String json,String key){
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
            md5.update((key + sortJson(json)).getBytes("UTF-8"));
            String md5String=new BigInteger(1, md5.digest()).toString(16);
            return fillMD5(md5String).toLowerCase();
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }


    private String fillMD5(String md5){
        //如果不够32位则回调自身补零,最后返回32位长度的签名
        return md5.length()==32?md5:fillMD5("0"+md5);
    }

3.base64加密:

    private String base64Encode(String str){
        if (str == null || "".equals(str)){
            return "";
        }
        Base64.Encoder encoder = Base64.getEncoder();
        byte[] encode = encoder.encode(str.getBytes());
        return  new String(encode);
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值