【问题标题】:md5 hex to binary in python [duplicate]python中的md5十六进制到二进制[重复]
【发布时间】:2020-01-21 18:40:24
【问题描述】:

我阅读了许多关于在 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 1011110111111101011010001001110001011011011100111111010110000111011010010101111100110

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

10110011000000111111101001101000010000111000000000000000000000000000000000000000000000000000000000000000000000

正确答案是什么?我应该如何纠正我的程序?

【问题讨论】:

  • 你用的是什么在线转换器?
  • 您需要将每个十六进制数字的二进制表示填充为 4 个字符。
  • 两个这些结果看起来都错了。您从转换器获得的转换为 b303fa684382d8000000000000000000

标签: python binary hex md5


【解决方案1】:

bin 函数不包含前导零,而每个十六进制字符始终代表 4 个二进制数字。 bin(_hex)[2:].rjust(4,"0") 会起作用。

【讨论】:

  • 当您使用它时,您也可以完全跳过循环并在整个十六进制摘要上调用bin 一次:print(bin(int(c.hexdigest(), 16))[2:].rjust(128, "0"))
  • @Kevin 值得单独回答。
猜你喜欢
  • 2019-01-27
  • 2022-10-14
  • 2014-10-30
  • 2023-03-19
  • 2013-06-13
  • 2013-02-21
  • 2011-12-09
  • 2018-01-09
  • 2014-02-19
相关资源
最近更新 更多