我一直在尝试用Node JS加密一些东西,然后用Python解密它。
当我将密钥(密钥,base64解码)提供给Fernet.js时,它形成一个十六进制字符串,该字符串等于:
f790b0a226bc96a92de49b5e9c05e1ee
但是,当我在Python中给出相同的键并尝试转换为十六进制时,值是:
730ff4c7af3d46923e8ed451ee813c87f790b0a226bc96a92de49b5e9c05e1ee
为什么会有不同?
NodeJS的代码示例:
let s = 'cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4='
new Buffer(s)).toString('hex')
Python:
be = base64.urlsafe_b64decode('cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4=')
be.hex()
发布于 2019-07-29 12:57:56
import base64 , binascii
key = "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
key = base64.urlsafe_b64decode(key)
# 32 bytes
f = binascii.hexlify(key)
# first 16
SigningKey = key[:16]
# next 16
EncKey = key[16:]
print (binascii.hexlify(SigningKey)) # 730ff4c7af3d46923e8ed451ee813c87
print (binascii.hexlify(EncKey)) # f790b0a226bc96a92de49b5e9c05e1ee
https://stackoverflow.com/questions/57253548
复制相似问题