Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python 3中从R复制基于SHA256的HMAC_Python_R_Sha256_Hmac_Salt - Fatal编程技术网

如何在Python 3中从R复制基于SHA256的HMAC

如何在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) 比纳西·赫克斯利夫(丹麦)

我试图用Python从R代码中复制salted
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