HMACSHA256加密算法 java实现

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class HMACSHA256 {
    /**
     * 将加密后的字节数组转换成字符串
     *
     * @param b 字节数组
     * @return 字符串
     */
    public static String byteArrayToHexString(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().toLowerCase();
    }

    /**
     * sha256_HMAC加密
     * 
     * @param message 消息
     * @param secret  秘钥
     * @return 加密后字符串
     */
    public static String sha256_HMAC(String message, String secret) {
        String hash = "";
        try {
            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
            SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
            sha256_HMAC.init(secret_key);
            byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
            hash = byteArrayToHexString(bytes);
        } catch (Exception e) {
            System.out.println("Error HmacSHA256 ===========" + e.getMessage());
        }
        return hash;
    }
    
    public static void main(String[] args) {
        String secret="aaa0711zzz";
        System.err.println(sha256_HMAC(secret,"asd"));
    }
}

 

输出:c6248891f19f33a0512f7b1b830f523cb6fc12797d6180881422abd2410d71a2

Java中的HmacSHA1加密算法可以通过Java标准库中的javax.crypto包来实现。下面是一个示例代码: ```java import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class HmacSHA1Example { public static void main(String[] args) { String message = "Hello, World!"; String key = "SecretKey"; try { // 创建一个密钥对象 SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA1"); // 创建一个HmacSHA1算法实例 Mac mac = Mac.getInstance("HmacSHA1"); // 初始化算法实例并设置密钥 mac.init(secretKeySpec); // 对消息进行加密 byte[] encryptedBytes = mac.doFinal(message.getBytes()); // 将加密结果转换为十六进制字符串 StringBuilder sb = new StringBuilder(); for (byte b : encryptedBytes) { sb.append(String.format("%02x", b)); } String encryptedMessage = sb.toString(); System.out.println("加密后的消息:" + encryptedMessage); } catch (NoSuchAlgorithmException | InvalidKeyException e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,我们使用了HmacSHA1算法对消息进行加密。首先,我们创建了一个密钥对象,然后使用HmacSHA1算法实例进行初始化并设置密钥。接下来,通过调用`doFinal`方法对消息进行加密,得到一个字节数组。最后,我们将字节数组转换为十六进制字符串,以便于显示和传输加密结果。 请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行适当的修改和错误处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值