zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    xp+Eclipse+Android开发环境搭建
    ADT下载地址整理
    Iris Network Traffic Analyzer简易教程
    cadence实用技巧
    How to solve "drivers/ner/igbvf/igbvf.h:129:15: error: duplicate member ‘page’"
    Python–ToDay(01)python基本数据类型 二进制—>十六进制
    OpenStack认识
    新的一天,我只想静静
    linux学习第一阶段
    冒泡排序
  • 原文地址:https://www.cnblogs.com/mrma/p/12830106.html
Copyright © 2011-2022 走看看