XOR ์ฐ์ฐ
์ํธํ ๋ฐ ๋ณตํธํ์ XOR ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ ํ
์คํธ๋ฅผ ASCII ๋ฐ์ดํธ ํ์์ผ๋ก ๋ณํํ๊ณ
XOR ํ๋ก ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๋ฐ์ดํธ๋ก ๋ณํํ๋ค. ์ฌ์ฉ์์๊ฒ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ ๊ณตํจ.
- ๋น ๋ฅธ ๊ณ์ฐ
- ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ํ์๋ ์ฐจ์ด ์์
- ์ดํดํ๊ณ ๋ถ์ํ๊ธฐ ์ฌ์
ํน์ง
- XOR์ ํ๊ธฐ ์ํด์๋ key๊ฐ ํ์ํ๋ฉฐ, key๋ ์์๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
- ์ํธํ ๋ณตํธํ๊ฐ ๊ฐ๋ค
- xor์ฐ์ฐ์ ^ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
์ฐธ์กฐ
XOR ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ฌด์ฐจ๋ณ ๋์
๋ฐฉ์,
์ฆ ์ฌ๋ฐ๋ฅธ ์ํธ ํ
์คํธ์ ์ผ์นํ๋ ์์์ ์ํธํ ํค๋ฅผ ์์ฑํ์ฌ ํฌ๋ํนํ๊ธฐ ์ด๋ ต๋ค.
www.tutorialspoint.com/cryptography_with_python/cryptography_with_python_xor_process.htm
XOR ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
XOR ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ(XOR swap algorithm) ๋๋ XOR ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์์ ๋ณ์๋ฅผ ๋์ง ์๊ณ , ๋ ๊ฐ์ ๋ณ์๋ฅผ ๋ฐฐํ์ ๋
ผ๋ฆฌํฉ(XOR) ๋นํธ ์ฐ์ฐ์ ์ด์ฉํ์ฌ ๊ต์ฒด(swap)ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ์์ ํ๋ก์ธ์์ ์ต์ ํ ๋ฅ๋ ฅ์ด ๋ถ์กฑํ์ ๋ ๋์์ผ๋ก ์์ฃผ ์ฌ์ฉ๋์๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ตฌํํ๊ธฐ
๋์๊ณผ์ ์ msg๊ธธ์ด๋งํผ key๊ณผ xor์ฐ์ฐ์ ํด์ฃผ๋ ๊ฒ์ด๋ค.
๋จ key๊ฐ msg๋ณด๋ค ์งง๋ค๋ฉด ๋ค์ key์ ์ฒ์์ผ๋ก ๋์๊ฐ์ ์ฐ์ฐํด์ฃผ์ด์ผ ํ๋ค.(์ด๊ณผ x)
def encrypt_xor(msg,key):
m_size = len(msg)
k_size = len(key)
ans = bytearray()
for i in range(m_size):
ans.append(msg[i] ^ key[i % k_size])
return ans
def main():
msg = 'hello world'
key = 'haeun'
enc = encrypt_xor(msg.encode(),key.encode())
dec = encrypt_xor(enc, key.encode()) #enc๋ byteํํ์ด๋ฏ๋ก encode()๊ฐ ํ์ ์์.
print("์๋ฌธ : ",msg)
print("์ํธํ : ",enc)
print("๋ณตํธํ : ",dec.decode())
main()
๊ฒฐ๊ณผ