Java代码实现使用HmacSHA256算法计算签名
Java代码实现使用HmacSHA256算法计算签名。定义一个字符串变量"secret"和一个整型变量"timestamp",作为生成签名字符串时使用的密钥和时间戳,定义一个GenSign方法,接受密钥和时间戳作为参数生成签名字符串,把timestamp和密钥按照一定的格式拼接起来,使用HmacSHA256算法计算签名
·
Java代码实现使用HmacSHA256算法计算签名
- 定义一个字符串变量"
secret"和一个整型变量"timestamp" - 作为生成签名字符串时使用的密钥和时间戳
- 定义一个GenSign方法,接受密钥和时间戳作为参数生成签名字符串
- 把timestamp和密钥按照一定的格式拼接起来
- 使用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方法,输出签名字符串。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)