如何在 Python 3 中从 R 重现基于 SHA256 的 HMAC
How to reproduce an SHA256-based HMAC from R in Python 3
我正在尝试从 Python:
中的 R 代码重现加盐的 sha256
输出
library(openssl)
res = sha256("test@gmail.com", key = "111")
res
# [1] "172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031"
import hashlib, binascii
dk = hashlib.pbkdf2_hmac(='sha256', b'test@gmail.com', b'111', 0)
binascii.hexlify(dk)
# b'494c86307ffb9e9e31c4ec8782af6498e91272c011a316c242d9164d765be257'
如何使 python 中的输出与 R 匹配?
我无法完全重现您的问题。以下键匹配
在 R 中:
library(openssl)
sha256("test@gmail.com")
#[1] "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
在Python3中:
import hashlib
print(hashlib.sha256(b"test@gmail.com").hexdigest())
#87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
更新以回应您的评论
首先要注意的是,在 R sha256
中使用非 NULL
key
参数将计算 hash-based message authentication code (HMAC)。来自 ?sha256
:
All hash functions either calculate a hash-digest for ‘key ==
NULL’ or HMAC (hashed message authentication code) when ‘key’ is
not ‘NULL’.
因此,如果您想使用密钥,则需要将 R 中生成的 HMAC 与 Python 中基于 SHA2556 的 HMAC 进行比较。
在 R 中:
library(openssl)
sha256("test@gmail.com", key = "111")
#[1] "172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031"
在Python 3:
import hmac
import hashlib
print(hmac.new(b"111", b"test@gmail.com", hashlib.sha256).hexdigest())
#172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031
我正在尝试从 Python:
中的 R 代码重现加盐的sha256
输出
library(openssl)
res = sha256("test@gmail.com", key = "111")
res
# [1] "172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031"
import hashlib, binascii
dk = hashlib.pbkdf2_hmac(='sha256', b'test@gmail.com', b'111', 0)
binascii.hexlify(dk)
# b'494c86307ffb9e9e31c4ec8782af6498e91272c011a316c242d9164d765be257'
如何使 python 中的输出与 R 匹配?
我无法完全重现您的问题。以下键匹配
在 R 中:
library(openssl)
sha256("test@gmail.com")
#[1] "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
在Python3中:
import hashlib
print(hashlib.sha256(b"test@gmail.com").hexdigest())
#87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
更新以回应您的评论
首先要注意的是,在 R sha256
中使用非 NULL
key
参数将计算 hash-based message authentication code (HMAC)。来自 ?sha256
:
All hash functions either calculate a hash-digest for ‘key == NULL’ or HMAC (hashed message authentication code) when ‘key’ is not ‘NULL’.
因此,如果您想使用密钥,则需要将 R 中生成的 HMAC 与 Python 中基于 SHA2556 的 HMAC 进行比较。
在 R 中:
library(openssl)
sha256("test@gmail.com", key = "111")
#[1] "172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031"
在Python 3:
import hmac
import hashlib
print(hmac.new(b"111", b"test@gmail.com", hashlib.sha256).hexdigest())
#172f052058445afd9fe3afce05bfec573b5bb4c659bfd4cfc69a59d1597a0031