消息摘要加密算法MAC

来源:互联网 发布:网络用语128是什么意思 编辑:程序博客网 时间:2024/06/05 07:10
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()); //实例化macmac.init(restoreSecretKey); //初始化macbyte[] 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));}}

0 0
原创粉丝点击