作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在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/
我是一名优秀的程序员,十分优秀!