寻求Python中SHA1函数等效实现:将JS加密代码转Python
把CryptoJS的SHA1转Base64逻辑转换为Python实现
你的Python代码出错的核心原因是错误地对SHA1的十六进制结果做了Base64编码,而CryptoJS的逻辑是直接对SHA1生成的原始二进制哈希值进行Base64编码,两者的处理对象完全不同。
正确的Python实现代码
import hashlib import base64 di_plainTextDigest = "你的目标字符串" # 1. 将字符串编码为UTF-8字节 plain_bytes = di_plainTextDigest.encode('utf-8') # 2. 计算SHA1哈希,获取原始二进制哈希值(注意用digest()而非hexdigest()) sha1_raw_hash = hashlib.sha1(plain_bytes).digest() # 3. 对原始哈希字节做Base64编码,再解码为字符串 di_digest = base64.b64encode(sha1_raw_hash).decode('utf-8') print(di_digest)
错误代码的问题分析
你原来的代码流程是:
计算SHA1哈希 → 转十六进制字符串 → 把十六进制字符串转字节 → Base64编码
但CryptoJS的实际流程是:
计算SHA1哈希(得到原始二进制数据) → 直接对二进制数据做Base64编码
多出来的“十六进制转换”步骤,会让最终的Base64结果完全偏离预期。
内容的提问来源于stack exchange,提问作者P Kishan
相关产品推荐
相关产品推荐

