如何在Python 3中从R复制基于SHA256的HMAC
我试图用Python从R代码中复制salted如何在Python 3中从R复制基于SHA256的HMAC,python,r,sha256,hmac,salt,Python,R,Sha256,Hmac,Salt,我试图用Python从R代码中复制saltedsha256输出: 库(openssl) res=sha256(“test@gmail.com“,key=“111”) 物件 #[1]“172F052058445 AFD9FE3AFCE05BFEC573B5BB4C659BFD4CFC69A59D1597A0031” 导入hashlib,binascii dk=hashlib.pbkdf2hmac('sha256',b'test@gmail.com,b'111',0) 比纳西·赫克斯利夫(丹麦)
sha256
输出:
库(openssl)
res=sha256(“test@gmail.com“,key=“111”)
物件
#[1]“172F052058445 AFD9FE3AFCE05BFEC573B5BB4C659BFD4CFC69A59D1597A0031”
导入hashlib,binascii
dk=hashlib.pbkdf2hmac('sha256',b'test@gmail.com,b'111',0)
比纳西·赫克斯利夫(丹麦)
#b'494c86307ffb9e9e31c4ec8782af6498e91272c011a316c242d9164d765be257'
如何使python中的输出与R匹配?我不能完全重现您的问题。以下键匹配 在R中: 在Python3中:
import hashlib
print(hashlib.sha256(b"test@gmail.com").hexdigest())
#87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
更新以回应您的评论 首先要注意的是,在R
sha256
中,使用非空的key
参数将计算。从?sha256
:
所有哈希函数要么计算“key”的哈希摘要==
“key”为空时为空或HMAC(哈希消息身份验证码)
不是“空”
因此,如果您想使用一个键,您需要将R中生成的HMAC与Python中基于SHA2556的HMAC进行比较
在R中:
在Python 3中:
import hmac
import hashlib
print(hmac.new(b"111", b"test@gmail.com", hashlib.sha256).hexdigest())
#172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031
@我已经编辑好了,请看一下。我还编辑了您的标题,因为您实际上并不是在问如何复制SHA256,而是基于SHA256的HMAC。我发现这一点与更多语言有关:
library(openssl)
sha256("test@gmail.com", key = "111")
#[1] "172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031"
import hmac
import hashlib
print(hmac.new(b"111", b"test@gmail.com", hashlib.sha256).hexdigest())
#172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031