XOR暗号とは

XOR暗号は、その名の通り、排他的論理和 (XOR, 記号:⊕)を用いた暗号化手法です。排他的論理輪 (XOR)には、以下のような2つの特徴があります。

  1. 与えられた2つのビットのうち片方が1、もう一方が0のときに1になる
  2. ビット列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暗号は、基本的に鍵さえバレなければ解読は困難です。ただし、鍵は平文よりも文字数を大きくする必要があります。

参考リンク

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です