Project Euler にチャレンジ:Problem 59

← Problem 58  Problem 60 →

Problem 59[XOR(排他的論理和)の復号化(XOR decryption)]

コンピュータ上の各文字には一意のコードが割り当てられています。よく使われる標準コードとして、ASCIIコード(American Standard Code for Information Interchange)があります。
例えば、大文字のA は 65 , アスタリスク(*) は 42 , 小文字の k は 107 です。
現代の暗号化方法は、テキストファイルを取得し、アスキーコードに変更して、秘密鍵から取得した特定の値でXOR変換することです。XOR変換の利点は、同じ秘密鍵を使うと複合化できることです。例えば、65 XOR 42 = 107 , 107 XOR 42 = 65 となります。

暗号化を破られないためには、鍵はランダムなバイトで、かつ長さはテキストメッセージと同じ長さである必要があります。ユーザーは別の場所に暗号化メッセージと暗号化キーを保持すると、どちらか一方だけでは復号化することは不可能になります。

不幸なことに、この方法は大部分の人にとっては実用的ではありません。なので、ユーザーは鍵の代わりにぱすーわどをキーとして使います。もしこのパスワードがメッセージよりも短い場合、その可能性が高いです、キーを繰り返し使うことになります。
この方法は、セキュリティを上げるためには長いパスワードを使う必要がありますが、記憶するためには短いパスワードにしないといけません。

今回の問題では簡単に、暗号化キーは3文字の小文字で構成されている。p059_cipher.txt(右クリックして名前を付けて保存してください) には、暗号化されたASCII コードが使われています。復号化したメッセージは、一般的な英単語が使われています。復号化したASCIIコードの値の和はいくつか。