21 lines
571 B
Python
21 lines
571 B
Python
|
|
def repeating_key_xor(key, message):
|
|
key_length = len(key)
|
|
message_length = len(message)
|
|
expanded_key = (key * (int(message_length / key_length))) + key[:message_length % key_length]
|
|
return bytes([m ^ k for m, k in zip(message, expanded_key)])
|
|
|
|
message = "Burning 'em, if you ain't quick and nimble\nI go crazy when I hear a cymbal"
|
|
key = "ICE"
|
|
|
|
# Convert message and key to bytes
|
|
message = message.encode('utf-8')
|
|
key = key.encode('utf-8')
|
|
|
|
cipher = repeating_key_xor(key, message)
|
|
|
|
# Convert to hexadecimal
|
|
cipher_hex = cipher.hex()
|
|
|
|
print(cipher_hex)
|