首页 > 编程语言 > 详细

java HmacMd5 Hmacsha1 hmacsha256加密

时间:2020-05-05 13:42:42      阅读:156      评论:0      收藏:0      [点我收藏+]
package com.demo;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class demoHmacMd5 {
    public static final String KEY_MAC = "HmacMD5";// "Hmacsha1"  ||  "Hmacsha256"
    public static void main(String[] args)  {
        String key=initKey();
        System.out.println(key);
        System.out.println(encryption("hello",key));
    }
    //初始化秘钥
   static String initKey(){
        try{
            KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
            return Base64.getEncoder().encodeToString(keyGenerator.generateKey().getEncoded());//秘钥使用base64加密存储
        }catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
    //数据进行加密
    static  String encryption(String content,String key){
        try{
          SecretKeySpec  secretKey =new SecretKeySpec(Base64.getDecoder().decode(key),KEY_MAC);
            Mac mac=Mac.getInstance(KEY_MAC);
            mac.init(secretKey);
            mac.update(content.getBytes());
            return toHex(mac.doFinal()); //加密结果使用16进制字符串进行保存
        }catch (NoSuchAlgorithmException | InvalidKeyException ex){
            System.out.println(ex.getMessage());
        }
        return null;
    }
    //转16进制字符串
    static String toHex(byte[] bytes) {
        BigInteger bi = new BigInteger(1, bytes);
        return String.format("%0" + (bytes.length << 1) + "X", bi);
    }
}

 

java HmacMd5 Hmacsha1 hmacsha256加密

原文:https://www.cnblogs.com/mrma/p/12830106.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!