需要python中SHA1函数的等效函数

lrpiutwd  于 2023-02-18  发布在  Python
关注(0)|答案(1)|浏览(166)

请帮我把下面的JS代码转换成Python。

const di_digest = CryptoJS.SHA1(di_plainTextDigest).toString(CryptoJS.enc.Base64);

di_plainTextDigest是字符串。
我尝试了一些Python方法,但不起作用。示例

result = hashlib.sha1(di_plainTextDigest.encode())
 hexd = result.hexdigest()
 hexd_ascii = hexd.encode("ascii")
 dig2 = base64.b64encode(hexd_ascii)
 dig3 = dig2.decode("ascii")
 print(dig3 )
nqwrtyyt

nqwrtyyt1#

要在Python中复制JavaScript代码的功能,可以使用hashlib和base64模块。但是,Python代码和JavaScript代码之间的区别在于使用的编码格式。在JavaScript代码中,di_plainTextDigest使用Base64格式编码,而在Python代码中,您将di_plainTextDigest的SHA1散列编码为十六进制字符串,然后再用Base64编码。要在Python中复制JavaScript代码,您可以跳过十六进制编码步骤,直接用Base64对di_plainTextDigest的SHA1散列进行编码。下面是Python代码,它应该会产生与JavaScript代码相同的结果:

import hashlib
import base64

di_plainTextDigest = "your plaintext digest"

sha1_hash = hashlib.sha1(di_plainTextDigest.encode())
base64_hash = base64.b64encode(sha1_hash.digest()).decode('ascii')

print(base64_hash)

注意,我们对sha1_hash对象的digest()进行编码,而不是对它的hexdigest()进行编码,这是因为hexdigest()返回的是一个十六进制编码的字符串,而我们想要生成的是一个Base64编码的字符串,我们还使用decode()方法将生成的bytes对象转换为ASCII格式的字符串。

相关问题