消息摘要加密算法MAC

    xiaoxiao2021-03-25  105

    package com.imooc.security.hmac; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex; import org.bouncycastle.crypto.digests.MD5Digest; import org.bouncycastle.crypto.macs.HMac; import org.bouncycastle.crypto.params.KeyParameter; /** * 消息摘要加密算法 * @author Bingo_Ge * MAC融合MD/SHA-->HMAC(含有密钥的散列函数算法) */ public class ImoocHmac { private static String src = "imooc security hmac"; public static void main(String[] args) { jdkHmacMD5(); bcHmacMD5(); } public static void jdkHmacMD5() { try { // KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5"); //初始化 // SecretKey secretKey = keyGenerator.generateKey(); // 生成密钥 // byte[] key = secretKey.getEncoded(); //获得密钥 byte[] key = Hex.decodeHex(new char[]{'a','a','a','a','a','a','a','a','a','a'}); //自定义密钥 SecretKey restoreSecretKey = new SecretKeySpec(key, "HmacMD5"); //还原密钥 Mac mac = Mac.getInstance(restoreSecretKey.getAlgorithm()); //实例化mac mac.init(restoreSecretKey); //初始化mac byte[] hmacMD5Bytes = mac.doFinal(src.getBytes()); //执行摘要 System.out.println("jdk hmacMD5:" + Hex.encodeHexString(hmacMD5Bytes)); } catch (Exception e) { e.printStackTrace(); } } public static void bcHmacMD5() { HMac hMac = new HMac(new MD5Digest()); hMac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex.decode("aaaaaaaaaa"))); //自定义密钥 hMac.update(src.getBytes(), 0, src.getBytes().length); byte[] hMacMD5Bytes = new byte[hMac.getMacSize()]; hMac.doFinal(hMacMD5Bytes, 0); System.out.println("bc hMacMD5:" + org.bouncycastle.util.encoders.Hex.toHexString(hMacMD5Bytes)); } }
    转载请注明原文地址: https://ju.6miu.com/read-22315.html

    最新回复(0)