gpt4 book ai didi

可以为 Hex 中的 HMAC-SHA256 提供与 Python 方法相同输出的 Java 方法

转载 作者:太空狗 更新时间:2023-10-30 00:41:08 24 4
gpt4 key购买 nike

我现在正在尝试使用 Java 使用 HMAC-SHA256 对字符串进行编码。编码字符串需要与 Python 使用 hmac.new(mySecret, myPolicy, hashlib.sha256).hexdigest() 生成的另一组编码字符串相匹配。我试过了

    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secretKey);

byte[] hash = sha256_HMAC.doFinal(policy.getBytes());
byte[] hexB = new Hex().encode(hash);
String check = Hex.encodeHexString(hash);
String sha256 = DigestUtils.sha256Hex(secret.getBytes());

在我打印出来之后,hash、hexB、check 和 sha256 并没有提供与以下 Python 加密方法相同的结果

hmac.new(mySecret, myPolicy, hashlib.sha256).hexdigest()

因此,我尝试寻找库或与上述 Python 函数类似的东西。谁能帮帮我?

最佳答案

您确定您的 key 和输入在 java 和 python 中相同且编码正确吗?

HMAC-SHA256 在两个平台上的工作原理相同。

Java

Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec("1234".getBytes(), "HmacSHA256");
sha256_HMAC.init(secretKey);
byte[] hash = sha256_HMAC.doFinal("test".getBytes());
String check = Hex.encodeHexString(hash);
System.out.println(new String(check));

Output
24c4f0295e1bea74f9a5cb5bc40525c8889d11c78c4255808be00defe666671f

python

print hmac.new("1234", "test", hashlib.sha256).hexdigest();

Output
24c4f0295e1bea74f9a5cb5bc40525c8889d11c78c4255808be00defe666671f

关于可以为 Hex 中的 HMAC-SHA256 提供与 Python 方法相同输出的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947026/

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