我有一个 32 位十六进制格式的加密 key 。但我只给了 22 位。我必须找到明文。我的思考过程是进行暴力攻击并找到其他 10 位。我也得到了密文。使用的加密是 128 位 ECB 模式下的 AES。我正在使用 Python,但我才刚刚开始学习它,所以我还不是专家。
我的方法是采用 22 位 key 并连接其他 10 位,将其与密文一起输入 AES,然后解密以检查生成的短语之一是否类似于正确的句子。我唯一坚持的部分是生成 10 位十六进制字符串。
这是我想要的输出:
0000000000
0000000001
0000000002
...
000000000F
...
FFFFFFFFFF
我可以使用什么方法来做到这一点?我尝试制作一个字典并为所有十六进制值分配数值,但我仍然坚持如何编写一个循环来给出我想要的序列作为输出。
最佳答案
def gen_all_hex():
i = 0
while i < 16**10:
yield "{:010X}".format(i)
i += 1
for s in gen_all_hex():
print(s)
结果:
0000000000
0000000001
0000000002
0000000003
0000000004
0000000005
0000000006
0000000007
0000000008
0000000009
000000000A
000000000B
000000000C
000000000D
000000000E
000000000F
0000000010
0000000011
0000000012
0000000013
0000000014
0000000015
0000000016
0000000017
0000000018
0000000019
000000001A
...
请注意,遍历所有 1,099,511,627,776 个值需要很长时间。
关于Python - 生成十六进制值的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40662084/