MAC(消息认证码)
消息认证代码需要考虑如下
算法+密钥+原文==>>MAC码
关于密钥的生成与导入, 下一篇再讲述
Java(JCE) 方式 - javax.crypto.Mac
上一篇, JDK的digest算法, 是通过工厂模式实现 , 同理如下
MAC生成过程
//关于密钥secretKeySpec下一篇才讲
Mac mac=Mac.getInstance("HmacMD5"); //算法
mac.init(secretKeySpec); //密钥
byte[] result = //MAC码
mac.doFinal(src.getBytes());//「原文」的字节码
BC(多态)
HMac hMac = new HMac(new MD5Digest());//选择算法
hMac.init(new KeyParameter(Hex.decodeHex(decodeKey.toCharArray())));//添加密码
hMac.update(src.getBytes(), 0, src.length());//添加原文
byte[] hMacBytes = new byte[hMac.getMacSize()];
hMac.doFinal(hMacBytes, 0);//进行操作字节码
思考
BC的代码和前一篇类似
JCE的package分类
mac(消息验证码)使用的是 : javax.crypto.Mac;
Javax.crypto的作用:
加密与解密
密钥相关操作
以及相关的SPI
digest(摘要)使用的是 : java.security.MessageDigest;
digest没有被认为是加密所用. 不过摘要算法也确实是常用来保证数据完整性, 而不是数据加密(因为不可逆性)
总结 : 只能说功能不同, 所使用的package(包)就会有差异…