【发布时间】:2015-06-01 02:21:55
【问题描述】:
我正在编写一个脚本来破解重复密钥 XOR (Vigenère) 密码。
这涉及确定一些数字(0
如果 n = 3,字节 [0, 2, 5, 8 等] 应该在一个块中,字节 [1,3,6,9] 应该在下一个块中,字节 [2,4,7,10 ] 在最后一个块中。
我可以使用字符串轻松实现这一点,但我不知道如何使其与字节对象一起使用。我搜索并找到并修改了这段代码:
blocks = [ciphertext[i:i+most_likely_keylength] for i in range(0, len(ciphertext)+1, most_likely_keylength)]
transposedBlocks = list(zip_longest(*blocks, fillvalue=0))
##ciphertext is a bytes object resulting from the following line:
##ciphertext = base64.b64decode(open('Q6.txt', 'r').read())
然而,这会返回一个用整数填充的元组列表,我不知道如何再次“加入”这些整数,因此它们将像以前一样是长二进制对象。 (这样我就可以在每个元组上运行 Crypto.Util.strxor_c 之类的好东西。
对字节对象的“字符串操作”有任何帮助吗?
注意:我正在 cryptopals.com 上处理 Break repeating-key XOR 挑战 – 我在 Github 上查看过其他人的解决方案,但他们大多使用专门的加密模块,我想看看我在做什么.
【问题讨论】:
标签: python python-3.x cryptography byte