问题描述
您确定您的键和输入是相同的并且在java和python中都正确编码吗?
HMAC-SHA256在两个平台上均相同。
爪哇
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
@H_502_9@蟒蛇
print hmac.new("1234", "test", hashlib.sha256).hexdigest(); Output 24c4f0295e1bea74f9a5cb5bc40525c8889d11c78c4255808be00defe666671f
@H_502_9@解决方法
我现在正尝试使用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,hashlib.sha256).hexdigest()
因此,我尝试寻找该库或类似于上述Python函数的库。有人可以帮我吗?