XOR暗号とは
XOR暗号は、その名の通り、排他的論理和 (XOR, 記号:⊕)を用いた暗号化手法です。排他的論理輪 (XOR)には、以下のような2つの特徴があります。
- 与えられた2つのビットのうち片方が1、もう一方が0のときに1になる
- ビット列Xに対してビット列YでXOR演算した結果に対し、再びビット列YでXOR演算すると元のビット列Xに戻る
これらの性質(特に②)を利用した暗号化がXOR暗号です。
XOR暗号の実装
PythonでのXOR暗号の実装例を以下に示します。
# XOR暗号で暗号化
def xor_encrypt (plaintext, key):
return "".join ( [chr (ord (c1) ^ ord (c2)) for (c1,c2) in zip (plaintext, key)])
# XOR暗号で復号化
def xor_decrypt (ciphertext, key):
return "".join ( [chr (ord (c1) ^ ord (c2)) for (c1,c2) in zip (ciphertext, key)])
# 平文
plaintext = "Excalibur"
# キー
key = "savarmajikawaii"
# 平文の表示
print ("平文 : " + plaintext)
# 暗号化
ciphertext = xor_encrypt (plaintext, key)
print ("暗号文 : " + ciphertext)
# 復号化
ciphertext = xor_decrypt (ciphertext, key)
print ("復号文 : " + ciphertext)
このコードでは、平文(暗号化するデータ)に鍵(パスワード)をXOR演算することで暗号文を生成します。そして、暗号文に対して鍵でXORすると復号化(暗号解除)します。
注意点
XOR暗号は、基本的に鍵さえバレなければ解読は困難です。ただし、鍵は平文よりも文字数を大きくする必要があります。
参考リンク
- xor-cipher
- 【Python】XOR暗号の実装例 | 西住工房
- Encrypt using XOR Cipher with Repeating Key – GeeksforGeeks
- xor-cipher/xor-cipher: Simple, reusable and optimized XOR …