Python实现的UTF8编码、SHA1哈希、Base64转码如何用Node.js等效实现?
问题原因
- 你的代码使用了第三方
utf8包做编码,其输出和Python标准UTF-8编码结果可能存在差异,Node.js内置Buffer类即可实现和Python完全一致的UTF-8编码效果 - 缺少Node.js内置
crypto模块的引入逻辑 - 部分打印格式未和Python输出规则对齐
修正后可完全对齐Python输出的Node.js代码
// 引入内置加密模块 const crypto = require('crypto'); const payload = "my URI"; // 完全等价Python payload.encode("utf-8") const payload_utf8 = Buffer.from(payload, 'utf-8'); console.log(payload_utf8); // 完全等价Python hashlib.sha1(payload_utf8).digest() const payload_sha1 = crypto.createHash('sha1').update(payload_utf8).digest(); console.log(payload_sha1); // 完全等价Python base64.b64encode(payload_sha1) const payload_base64 = payload_sha1.toString('base64'); // 若要和Python打印格式完全对齐(输出带b''前缀),使用下一行 console.log(`b'${payload_base64}'`); // 仅需base64值的话直接打印console.log(payload_base64)即可
验证说明
你可以直接使用样例输入my URI测试,两段代码输出的UTF-8编码字节、SHA1哈希值、Base64编码结果完全一致。
内容的提问来源于stack exchange,提问作者Maya Boelsmand
相关产品推荐
相关产品推荐

