我有一些java代码被要求转换为Python2.7,我在网上查了一下,没有找到一个好的例子。 Java 代码正在使用 SecretKeySpec 函数和 HmacSHA256 构建签名。
它需要一个 keyString 作为参数和一个消息字符串
下面是我需要转换为Python的函数:
public static String genSig(String key, String Params) throws Exception {
byte[] decodedKey = Base64.getDecoder().decode(key);
SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "HmacSHA256");
Mac hmacSha256 = Mac.getInstance("HmacSHA256");
hmacSha256.init(originalKey);
hmacSha256.update(Params.getBytes());
byte[] HmachSha256DigestBytes = hmacSha256.doFinal();
return Base64.getEncoder().encodeToString(HmachSha256DigestBytes);
}
我已经研究了 hmac 和 hashlib 库,但我不确定使用这些库中的什么来完成此转换?
最佳答案
您可以使用以下代码:
import hmac
import hashlib
import base64
def generateSignatureFromParams(key, params):
dig = hmac.new(base64.b64decode(key), msg=params, digestmod=hashlib.sha256).digest()
return base64.b64encode(dig).decode()
print generateSignatureFromParams("a2V5", "encrypt")
注意获取HMACSha256,digestmod=hashlib.sha256
很重要。
关于java - 端口 SecretKeySpec Java 代码转换为 Python27,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57042971/