我对密码学和编程(作为一个整体)(例如几个月)不熟悉,因此开始了密码学挑战。我阅读了大量有关如何在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