请帮我把下面的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 )
1条答案
按热度按时间nqwrtyyt1#
要在Python中复制JavaScript代码的功能,可以使用hashlib和base64模块。但是,Python代码和JavaScript代码之间的区别在于使用的编码格式。在JavaScript代码中,di_plainTextDigest使用Base64格式编码,而在Python代码中,您将di_plainTextDigest的SHA1散列编码为十六进制字符串,然后再用Base64编码。要在Python中复制JavaScript代码,您可以跳过十六进制编码步骤,直接用Base64对di_plainTextDigest的SHA1散列进行编码。下面是Python代码,它应该会产生与JavaScript代码相同的结果:
注意,我们对sha1_hash对象的digest()进行编码,而不是对它的hexdigest()进行编码,这是因为hexdigest()返回的是一个十六进制编码的字符串,而我们想要生成的是一个Base64编码的字符串,我们还使用decode()方法将生成的bytes对象转换为ASCII格式的字符串。