如何增加一个python“字节”对象

在Python3.7中增加字节对象的斋戒方法是什么?请考虑以下内容:

>>> foo = '00000000000000000000000000000000'
>>> bar = binascii.unhexlify(foo)
>>> bar
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

我想将bar加1,导致b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'

如果我尝试bar + 1,我会得到:

>>> bar + 1
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: can't concat int to bytes

如果我尝试bar + b'1',我会得到:

>>> bar + b'1'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001'

我知道比通过返回foo(字符串),将其转换为int,递增,转换回字符串,然后执行{ {1}}。但是我对这些字节对象不熟悉。

编辑

我的最终用途是在保持binascii.unhexlify不变的同时遍历下面的plaintext的许多值。我想将KEY从'0000000000000000000000000000000000000'拿到'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'并计算每个值。我想这需要几年时间才能完成,但是我很好奇它会走多快。

plaintext
wang787890 回答:如何增加一个python“字节”对象

我也很好奇。一旦程序完成运行,请发布程序的完整输出。大声笑...

您可以使用to_bytes和from_bytes函数在Python 3.2中从整数移至字节数组。我认为这是您的小计划中缺少的部分。

因此,请输入所需的数据,然后将其解释为“大端”数字表示形式,将其转换为数字:

plaintext = binascii.unhexlify('11112222333344445555666677778888')
# also,we'll want to know our length later on
plaintext_length = len(plaintext)
plaintext_number = int.from_bytes(plaintext,'big')

现在,您可以继续增加该数字,然后根据需要进行处理。例如,将其转换回字节数组和/或将其打印为十六进制:

plaintext_number += 1
new_plaintext = plaintext_number.to_bytes(plaintext_length,'big')
new_hex = binascii.hexlify(new_plaintext)

print(f'Testing new string. This shouldnt take too long,almost done! {new_hex}')

new_ciphertext = rijn.encrypt(new_plaintext)
new_cipherhex = binascii.hexlify(new_ciphertext).decode('utf-8')

摘要::您不能增加字节数组。您必须首先将字节解释为某种东西。我们将其解释为大端整数。挂在那个整数上并继续增加它。在每个步骤中,您都可以根据需要将该整数转换回字节数组,甚至转换回十六进制字符串。

本文链接:https://www.f2er.com/3061226.html

大家都在问