java hmac-sha1 算法使用

本文深入探讨了HMAC算法的原理与应用,通过具体代码示例,详细讲解了如何使用Java实现HMAC-SHA1签名过程。从密钥构造到最终的Base64编码输出,每一环节都进行了细致解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public static String genHMAC(String data, String key) {
        byte[] result = null;
        try {
            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
            SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), HmacAlgorithm.HmacSHA1.getValue());
            //生成一个指定 Mac 算法 的 Mac 对象
            Mac mac = Mac.getInstance(HmacAlgorithm.HmacSHA1.getValue());
            //用给定密钥初始化 Mac 对象
            mac.init(signinKey);
            //完成 Mac 操作
            byte[] rawHmac = mac.doFinal(data.getBytes());
            result = Base64.getEncoder().encode(rawHmac);

        } catch (NoSuchAlgorithmException e) {
            System.err.println(e.getMessage());
        } catch (InvalidKeyException e) {
            System.err.println(e.getMessage());
        }
        if (null != result) {
            return new String(result);
        } else {
            return null;
        }
    }

 

### Java中实现HMAC-SHA256算法的工具类 为了在Java应用程序中安全地处理数据签名,可以创建一个专门用于执行HMAC-SHA256操作的工具类。此类不仅能够简化开发过程中的编码工作量,而且有助于提高代码可读性和维护性。 下面是一个简单的`HmacSha256Util`工具类示例: ```java import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class HmacSha256Util { private static final String ALGORITHM = "HmacSHA256"; /** * 使用指定密钥对输入的消息进行HMAC-SHA256加密. * * @param data 待加密的数据 * @param key 加密使用的密钥 * @return 返回十六进制表示形式的结果字符串 */ public static String hmacSha256(String data, String key) { try { Mac sha256_HMAC = Mac.getInstance(ALGORITHM); SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), ALGORITHM); sha256_HMAC.init(secret_key); byte[] hash = sha256_HMAC.doFinal(data.getBytes()); StringBuilder hexString = new StringBuilder(); for (byte b : hash) { String hex = Integer.toHexString(0xFF & b); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } catch (NoSuchAlgorithmException | InvalidKeyException e) { throw new RuntimeException(e.getMessage(), e); // 抛出自定义异常以便于调用者捕获并处理 } } } ``` 此工具类提供了静态方法`hmacSha256()`来接收两个参数——待加密的信息(`data`)以及用来生成哈希摘要的秘密密钥(`key`)。该函数内部通过JCA(JCE)API实现了具体的逻辑流程[^2]。 当需要验证上述工具类的功能时,可以通过编写单元测试案例来进行校验。例如,在主程序或其他地方调用这个工具类的方法,并将返回值与预期结果相比较以确认其准确性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值