
두 개의 비트가 서로 다를 때 결과값이 1이 되고, 같을 때는 0이 되는 이항 연산자로 두 피연산자는 같은 길이를 가져야 합니다.
Python에서는 ^ 기호로 XOR 연산을 수행할 수 있습니다.
import sys
PLAIN_TEXT = "Hello World"
ENCRYPT_KEY = "This is key"
data1 = int.from_bytes(bytes=PLAIN_TEXT.encode(), byteorder=sys.byteorder)
data2 = int.from_bytes(bytes=ENCRYPT_KEY.encode(), byteorder=sys.byteorder)
cipher_text = (data1 ^ data2).to_bytes(length=len(PLAIN_TEXT), byteorder=sys.byteorder)
print(cipher_text, cipher_text.hex()) # b'\x1c\r\x05\x1fOI$O\x19\t\x1d' 1c0d051f4f49244f19091d
이항 연산자는 피연산자가 2개인 연산자입니다.
두 개의 비트가 서로 다를 때 결과값이 1이 되고, 같을 때는 0이 되는 이항 연산자로 두 피연산자는 같은 길이를 가져야 합니다.
Python에서는 ^ 기호로 XOR 연산을 수행할 수 있습니다.
암호화 시 사용했던 키를 그대로 사용하면 복호화가 이루어집니다.
import sys
CIPHER_TEXT = b'\x1c\r\x05\x1fOI$O\x19\t\x1d'
ENCRYPT_KEY = "This is key"
data1 = int.from_bytes(bytes=CIPHER_TEXT, byteorder=sys.byteorder)
data2 = int.from_bytes(bytes=ENCRYPT_KEY.encode(), byteorder=sys.byteorder)
plain_text = (data1 ^ data2).to_bytes(length=len(CIPHER_TEXT), byteorder=sys.byteorder)
print(plain_text, plain_text.hex()) # b'Hello World' 48656c6c6f20576f726c64
이항 연산자는 피연산자가 2개인 연산자입니다.