Android(Java)方法相当于Hex中的Python HMAC-SHA256

我试图在Android(Java)中复制Python HMAC-SHA256等价物。 下面显示了Python表示的正确输出:

python

print (hmac.new(key = binascii.unhexlify("0123465789"),msg = binascii.unhexlify("ABCDEF"),digestmod=hashlib.sha256).hexdigest()).upper() Output 5B5EE08A20DDD645A31384E51AC581A4551E9BE5AC8BF7E690A5527F2B9372CB 

但是,我无法使用以下代码在Java中获得相同的输出:

Java的

 Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secretKey = new SecretKeySpec("0123465789".getBytes("UTF-8"), "HmacSHA256"); sha256_HMAC.init(secretKey); byte[] hash = sha256_HMAC.doFinal("ABCDEF".getBytes("UTF-8")); String check = (new String(Hex.encodeHex(hash))).toUpperCase(); System.out.println(check); Output 46F9FD56BDAE29A803BAD5BC668CB78DA4C54A51E6C031FB3BC2C42855047213 

我相当肯定我的问题是没有编写Python的Java代码:

 key = binascii.unhexlify("0123465789") 

 msg = binascii.unhexlify("ABCDEF") 

这是因为当我不在Python中对Hex-String输入执行binascii.unhexlify时,我为这两种方法呈现相同的结果。 但是,Python HMAC-SHA256需要binascii.unhexlify操作。

我已经做了很多研究甚至尝试导入Python用于在Java中执行binascii.unhexlify的方法,但我仍然无法生成相同的结果。 在解决此问题时,任何帮助和/或建议都将不胜感激。 有人可以帮帮我吗?