Java HMAC-SHA1加密算法的实现

**摘 要:**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/)上加密后的内容进行比对一下,看看我们的加密结果是否和网站的一样。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
HMAC-SHA1是一种常用的加密算法,可以使用Java中的javax.crypto库来实现。以下是Java实现HMAC-SHA1加密的示例代码: ```java import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class HmacSha1 { public static void main(String[] args) { String text = "hello world"; String key = "secret_key"; String hmacSha1 = hmacSha1(text, key); System.out.println(hmacSha1); } public static String hmacSha1(String text, String key) { try { Mac hmac = Mac.getInstance("HmacSHA1"); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA1"); hmac.init(secretKey); byte[] digest = hmac.doFinal(text.getBytes()); StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append(String.format("%02x", b)); } return sb.toString(); } catch (NoSuchAlgorithmException | InvalidKeyException e) { e.printStackTrace(); return null; } } } ``` 在这个示例中,我们首先定义了一个字符串text和一个密钥key,然后调用hmacSha1方法来获取HMAC-SHA1加密后的结果。在hmacSha1方法中,我们首先使用"javax.crypto.Mac"类获取HmacSHA1算法实例,然后使用密钥初始化该对象。接着,我们调用doFinal方法来计算HMAC-SHA1值,并将结果转换成十六进制字符串返回。 需要注意的是,HMAC-SHA1算法需要一个密钥来进行计算,密钥的长度应该不小于160位(20字节)。在实际应用中,密钥的生成和管理也是非常重要的,需要特别注意。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值