Java代码实现使用HmacSHA256算法计算签名

2023-12-13 05:15:11

Java代码实现使用HmacSHA256算法计算签名

  1. 定义一个字符串变量"secret"和一个整型变量"timestamp"
  2. 作为生成签名字符串时使用的密钥和时间戳
  3. 定义一个GenSign方法,接受密钥和时间戳作为参数生成签名字符串
  4. 把timestamp和密钥按照一定的格式拼接起来
  5. 使用HmacSHA256算法计算签名
package sign;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;

public class SignDemo {
    public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {

        String secret = "demo";
        int timestamp = 1599360473;
        System.out.printf("sign: %s", GenSign(secret, timestamp));

    }
    private static String GenSign(String secret, int timestamp) throws NoSuchAlgorithmException, InvalidKeyException {
        //把timestamp+"\n"+密钥当做签名字符串
        String stringToSign = timestamp + "\n" + secret;

        //使用HmacSHA256算法计算签名
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(stringToSign.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
        byte[] signData = mac.doFinal(new byte[]{});
        return new String(Base64.encodeBase64(signData));
    }

}

运行main方法,输出签名字符串。

文章来源:https://blog.csdn.net/qq_44724480/article/details/134949134
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。