**摘 要:**HMAC-SHA1是一种安全的基于加密 hash函数和共享密钥的消息认证协议,它可以有效地防止数据在传输的过程中被截取和篡改,维护了数据的完整性、可靠性和安全性。HMAC-SHA1消息认证机制的成功在于一个加密的 hash函数、一个加密的随机密钥和一个安全的密钥交换机制。本博客目前不涉及其加密的数学知识,也不涉及到其中的加密原理,只是实现了Java语言实现加密的方式。随着以后知识的深入,再继续的补充过来。
- Java 加密代码:
public static String hamcsha1(byte[] data, byte[] key)
{
try {
SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
return byte2hex(mac.doFinal(data));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
return null;
}
- 然后我们再将加密后的字节数组转换成一个字符串:
//二行制转字符串
public static String byte2hex(byte[] b)
{
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; b!=null && n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1)
hs.append('0');
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
最后当我们写好了代码之后还需要测试一下我们加密代码是否正确,这里我这是设置加密内容位:123456,加密的密钥为:12345678,最后得到的加密结果是:8fcfc2d7e51f5b502ad1b2270e885e29a7bb81df,然后我们跟在线加密网站(http://encode.chahuo.com/)上加密后的内容进行比对一下,看看我们的加密结果是否和网站的一样。