gpt4 book ai didi

java - 如何在Java中基于此方法在Python中生成HmacSHA1算法上的Hash?

转载 作者:行者123 更新时间:2023-11-30 07:39:04 25 4
gpt4 key购买 nike

我尝试在Python中实现这个Java方法,但似乎很难用纯Python重写它。

public static String CalculateHash(String input, String token) {
SecretKeySpec signingKey = new SecretKeySpec(token.getBytes(), "HmacSHA1");

Mac mac = null;
mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);

assert mac != null;


byte[] bytes = mac.doFinal(input.getBytes(Charset.forName("UTF-8")));
String form = "";

for (byte aByte : bytes) {
String str = Integer.toHexString(((int) aByte) & 0xff);
if (str.length() == 1) {
str = "0" + str;
}
form = form + str;
}

return form;
}

我尝试了这个,但它生成了其他哈希值。

def sign_request():
from hashlib import sha1
import hmac

# key = CONSUMER_SECRET& #If you dont have a token yet
key = "CONSUMER_SECRET&TOKEN_SECRET"


# The Base String as specified here:
raw = "BASE_STRING" # as specified by oauth

hashed = hmac.new(key, raw, sha1)

# The signature
return hashed.digest().encode("base64").rstrip('\n')

我应该在标准 Python 库中使用什么以及如何重写它?谢谢

最佳答案

您的 python 代码和 java 代码不匹配,因为 python 代码使用基数 64,而 java 代码使用十六进制(基数 16)。

您应该更改phyton代码以使用base16作为其输出,这可以使用hex()函数来完成,注意用java代码中正确的0字符数正确填充数字确实如此。

关于java - 如何在Java中基于此方法在Python中生成HmacSHA1算法上的Hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34948806/

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