登录
首页 >  文章 >  前端

为什么Python和JS使用MD5方法返回的类型不同?

时间:2024-12-11 11:39:30 133浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《为什么Python和JS使用MD5方法返回的类型不同?》,正文内容主要涉及到等等,如果你正在学习文章,或者是对文章有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

为什么Python和JS使用MD5方法返回的类型不同?

有道翻译逆向解析

在有道翻译逆向过程中,遇到了一个问题:js经过md5方法返回的类型和python经过md5方法返回的类型不同。为了探讨原因,我们分析了js和python中的md5实现。

python md5

hashlib.md5(...) 是python中用于计算md5哈希的函数。它返回一个字节对象,该字节对象包含哈希值。要获得十六进制表示形式,可以调用 .hex() 方法。

import hashlib

decodeiv = "ydsecret://query/iv/c@lze2yzhtz2cygaxksvfsb7y4qwhjitppz0nqp87fbej!iv6v^6fvi2wn@bypj4"
res = hashlib.md5(decodeiv.encode('utf-8')).digest()
s_16 = res.hex()  # 'd2bb1bfde83b38c344366357b79cae1c'

js md5

javascript没有内建md5函数。然而,可以通过使用诸如cryptojs等第三方库来实现md5。cryptojs中的 md5() 方法返回一个字符串对象,包含哈希值的十六进制表示形式。

const CryptoJS = require("crypto-js");
const decodeiv = "ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4";
const result = CryptoJS.MD5(decodeiv);
console.log(result.toString(), "-------------");  // 'd2bb1bfde83b38c344366357b79cae1c' ------------

比较结果

比较python和js返回的md5结果,发现它们是相同的:d2bb1bfde83b38c344366357b79cae1c。因此,问题不在于md5算法本身,而在于你对结果的处理方式。如果你将python端的字节数组转换为十六进制字符串,你将得到与javascript相同的字符串结果。

今天关于《为什么Python和JS使用MD5方法返回的类型不同?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>