python中的md5十六进制到二进制

python中的md5十六进制到二进制,python,binary,hex,md5,Python,Binary,Hex,Md5,我读了很多关于在SO中将十六进制转换为二进制的答案。我尝试用md5实现它: import hashlib c = hashlib.md5("123hello123".encode('ascii')) print(c.hexdigest()) for _hex in c.hexdigest(): _hex = int(_hex, 16) print(bin(_hex)[2:], end="") 我得到输出: b303fa684382db471658016690101792 10

我读了很多关于在SO中将十六进制转换为二进制的答案。我尝试用md5实现它:

import hashlib

c = hashlib.md5("123hello123".encode('ascii'))
print(c.hexdigest())
for _hex in c.hexdigest():
    _hex = int(_hex, 16)
    print(bin(_hex)[2:], end="")
我得到输出:

b303fa684382db471658016690101792 101111011111111010110100010011100010110110111001111110101100001110100101011111001100110

当我在在线转换器中转换时,我得到:

1011001100000011111101001101000010110000010110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


正确答案是什么?如何更正程序?

bin函数不包含前导零,而每个十六进制字符始终表示4个二进制数字<代码>二进制(_hex)[2:].rjust(4,“0”)可以工作。

您使用的是什么在线转换器?您需要将每个十六进制数字的二进制表示形式填充到4个字符。这两个结果看起来都错了。你从转换器中得到的一个转换成
B303FA684382D80000000000000000
。当你这样做的时候,你可以完全跳过这个循环,只需在整个十六进制摘要上调用
bin
print(bin(int(c.hexdigest(),16))[2:.rjust(128,“0”)
@Kevin,这是值得单独回答的问题。