• java HmacMd5 Hmacsha1 hmacsha256加密


    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);
        }
    }
  • 相关阅读:
    译:DOM2中的高级事件处理(转)
    Cookbook of QUnit
    URI编码解码和base64
    css截断长文本显示
    内置对象,原生对象和宿主对象
    HTML中的meta(转载)
    iframe编程的一些问题
    自动补全搜索实现
    new的探究
    深入instanceof
  • 原文地址:https://www.cnblogs.com/mrma/p/12830106.html
Copyright © 2020-2023  润新知