Python 忽略前导 0 的编码
Python Encoding that ignores leading 0s
我在 python 3.5 中编写代码,一旦给定 pcap 文件和密码,它就会使用 hashlib 为每个数据包吐出 MD5 加密。我正在使用 pyshark 遍历 pcap 文件。目前,它吐出的值与 pcap 文件中数据包的 MD5 加密不同。
我将其归因于此的原因之一是在数据包的十六进制表示中,值以前导 0 表示。例如:协议号显示为b'06'。但是我更新 hashlib 变量的值是 b'6'。出于同样的原因,这两个值不相同:
>> b'06'==b'6'
False
我编码整数的方式是:
(hex(int(value))[2:]).encode()
我正在做这个编码,否则会导致这个错误:"TypeError: Unicode-objects must be encoded before hashing"
我想知道是否可以帮助我找到忽略前导 0 的 python 编码库,或者是否有任何方法可以让内置的十六进制方法忽略前导 0。
谢谢!
散列 b'06'
和 b'6'
给出不同的结果,因为在这种情况下,'06' 和 '6' 不同。
Python 中的 b
字符串前缀告诉 Python 解释器将字符串中的每个字符转换为一个字节。因此,b'06'
将被转换为两个字节 0x30 0x36
,而 b'6'
将被转换为单个字节 0x36
。正如散列 b'a'
和 b' a'
(注意 space)产生不同的结果,散列 b'06'
和 b'6'
也会产生不同的结果。
如果您不明白为什么会发生这种情况,我建议您查看 Python 和更普遍的字节是如何工作的 - Python 对字节的处理一直有点违反直觉,所以如果看起来很混乱,请不要担心!同样重要的是要注意 Python 表示字节的方式在 Python 2 和 Python 3 之间发生了变化,因此请务必检查 Python 的任何版本谈论。你也可以在这里评论,
我在 python 3.5 中编写代码,一旦给定 pcap 文件和密码,它就会使用 hashlib 为每个数据包吐出 MD5 加密。我正在使用 pyshark 遍历 pcap 文件。目前,它吐出的值与 pcap 文件中数据包的 MD5 加密不同。
我将其归因于此的原因之一是在数据包的十六进制表示中,值以前导 0 表示。例如:协议号显示为b'06'。但是我更新 hashlib 变量的值是 b'6'。出于同样的原因,这两个值不相同:
>> b'06'==b'6'
False
我编码整数的方式是:
(hex(int(value))[2:]).encode()
我正在做这个编码,否则会导致这个错误:"TypeError: Unicode-objects must be encoded before hashing"
我想知道是否可以帮助我找到忽略前导 0 的 python 编码库,或者是否有任何方法可以让内置的十六进制方法忽略前导 0。
谢谢!
散列 b'06'
和 b'6'
给出不同的结果,因为在这种情况下,'06' 和 '6' 不同。
Python 中的 b
字符串前缀告诉 Python 解释器将字符串中的每个字符转换为一个字节。因此,b'06'
将被转换为两个字节 0x30 0x36
,而 b'6'
将被转换为单个字节 0x36
。正如散列 b'a'
和 b' a'
(注意 space)产生不同的结果,散列 b'06'
和 b'6'
也会产生不同的结果。
如果您不明白为什么会发生这种情况,我建议您查看 Python 和更普遍的字节是如何工作的 - Python 对字节的处理一直有点违反直觉,所以如果看起来很混乱,请不要担心!同样重要的是要注意 Python 表示字节的方式在 Python 2 和 Python 3 之间发生了变化,因此请务必检查 Python 的任何版本谈论。你也可以在这里评论,