人々が暗号化を始めていると聞いたことがありますが、それは私が望むものかもしれないと思ったので、XOR をチェックしましたが、意味がわかりません。誰かが XOR とは何かを説明できますか?
8 に答える
0101 などのキーを取得し、それを使用して文字列を (バイナリ形式で) XOR し、暗号化された文字列を作成します。
0101 XOR <-- key
1011 <---- original message
----
1110 <-- send message
受信者に 1110 を送信します。その受信者は、受信した文字列を取得し、それをキーで XOR して元のメッセージを取得します。
1110 XOR <--- received message
0101 <-- key
----
1011 <--- original message
XOR、または「排他的 OR」は、次のように定義される 2 つのオペランドの論理演算です。
(a and b) or (not a and not b)
a b result
0 0 0
1 0 1
0 1 1
1 1 0
暗号化に関する XOR の重要な機能は、元に戻せることです。つまり、C = A XOR B の場合、A = C XOR B を使用して A を取得できます。
したがって、平文 A のストリームと同じ長さの鍵 B に対して、暗号文 C を生成し、それを受信者に送信できます。
B のコピーを金庫に持っている受信者は、C XOR B を実行して A を再生できます。
XOR は論理演算であり、排他的またはと発音されます。メッセージを簡単かつ迅速に暗号化するために使用できます。この操作の真理値表は、http: //mathworld.wolfram.com/XOR.htmlで確認できます。
疑似コードの実装 ( http://www.evanfosmark.com/2008/06/xor-encryption-with-python/ 経由) :
#!/usr/bin/env python
from itertools import izip, cycle
def xor_crypt_string(data, key):
return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))
my_data = "Hello. This is a secret message! How fun."
my_key= "firefly"
# Do the actual encryption
encrypted = xor_crypt_string(my_data, key=my_key)
print encrypted
print '---->'
# This will obtain the original data from the encrypted
original = xor_crypt_string(encrypted, key=my_key)
print original
出力:
. BY2F
FRR
DF$IB
---->
Hello. This is a secret message! How fun.
最も単純なレベルでは、XOR (「排他的 OR」と発音) などの可逆演算が、ほとんどの暗号化の基礎を形成します。
XOR は、特定のビットのオンとオフを切り替えられるトグル スイッチのように機能します。数値 (ビットのパターン) を「スクランブル」したい場合は、それを「秘密の」数値と XOR します。そのスクランブルされた番号を同じ秘密の番号で再度 XOR すると、元の番号が返されます。
番号 (210) を秘密の「キー」 (145) で暗号化します。 210 XOR 145 は65 を返します ←-- 「スクランブルされた」結果 | |+ 今それを解読 +| | ↓ 65 XOR 145 は210 ←-- となり、元の数に戻ります
これは非常に初歩的な例です。XOR を使用して一連の数字 (またはテキストまたはビットの任意のパターン) を暗号化すると、非常に基本的な暗号アルゴリズムが得られます。
XOR は「排他的または」の略です。XOR B は、A が真の場合、または B が真の場合に真ですが、A と B の両方が真の場合は真ではありません。
A XOR B XOR A は B と等しいため、暗号化に使用されます。つまり、A を暗号化と復号化の両方のキーとして使用できる場合です。
この暗号化方法は安全とは言い難いことに注意してください。ヘッダーがよく知られている一般的なファイル (PNG、JPG など) を暗号化すると、暗号化されたコンテンツと既知のヘッダーからキーを簡単に取得できます。
XOR暗号化は、暗号ブロック連鎖でも使用できます。XOR CBCは、多くの暗号化実装への追加として使用されます。XORだけではあまり安全ではありませんが、これを単独で利用するgoogle codeプロジェクトがあります:http ://code.google.com/p/xorencryption/