gpt4 book ai didi

java - 测试 HmacSHA256 签名

转载 作者:行者123 更新时间:2023-12-01 23:51:43 25 4
gpt4 key购买 nike

我正在使用来自 https://www.rfc-editor.org/rfc/rfc4231 的测试 vector 测试我的 Hmac

但在测试用例 3 中,“使用大于 64 字节的 key 和数据的组合长度进行测试(= SHA-224 和 SHA-256 的 block 大小)。”我得到的摘要与正确的摘要不同。

byte[] key = hexify("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
byte[] data = hexify("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
byte[] correct = hexify("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe");

// Create digest
SecretKey macKey = new SecretKeySpec(key, "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(macKey);
byte[] digest = mac.doFinal(data);

知道为什么它们会变得不同吗?我错过了什么?我对此很陌生。

// Hex encoded
a5418172bb54bf71f3ec28d1c9f34c48da17007eac4d0ca9e2f8ab54b91603e8
773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe

最佳答案

我无法重现您的问题。对我来说,以下 SSCCE 效果很好:

public static void main(String[] args) throws Exception {
byte[] key = hexify("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
byte[] data = hexify("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
byte[] correct = hexify("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe");

// Create digest
SecretKey macKey = new SecretKeySpec(key, "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(macKey);
byte[] digest = mac.doFinal(data);
System.out.println(Arrays.equals(correct, digest));
}

private static byte[] hexify(String string) {
return DatatypeConverter.parseHexBinary(string);
}

打印:true

您的显示或比较代码中可能存在错误?

关于java - 测试 HmacSHA256 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com