卡在Cryptopals Crypto Challenge 3 set 1上

时间:2018-08-15 03:05:24

标签: python-3.x math cryptography

我对密码学和编程(作为一个整体)(例如几个月)不熟悉,因此开始了密码学挑战。我阅读了大量有关如何在python中进行转换的文章,正确地完成了前2个步骤。

我陷入了第三个“单字节XOR”的代码中,在那里他们给您一个十六进制字符串,并告诉您编写程序来查找用于对字符串进行XOR的密钥。

我知道我将如何做(不寻找解决方案): 1)将字符串转换为二进制 2)遍历所有字符值与给定的密文分别进行异或 3)检查这些XORd结果,看哪一个看起来“最英语”

我想我只是对字节在python中的行为感到困惑。 这是我的代码:

my_ciphertext =    "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"
binary_rep_of_ciphertext = binascii.unhexlify(my_ciphertext)
array_of_ciphertext = bytearray(binary_rep_of_ciphertext)

def xor_string_and_char(my_char_value):
    result = array_of_ciphertext ^ my_char_value
    return '{:x}'.format(result)     # convert back to hexadecimal

x = 0 
assert x==0
while x in range(255):
    my_plaintext = xor_string_and_char(x)
    print('b' + my_plaintext)
    x=x+1

0 个答案:

没有答案