私は、各文字をスクランブリングしてテキストファイルを変換するencryptというプログラムを書こうとしています。これは、入力をエンコードするために使用されるコマンドライン引数としてキー(文字列)を指定することによって実現されます。したがって:ハスケル暗号化プログラム
cat txtfile.txt | ./encrypt XXAYSAAZZ
は、テキストをキーと無限に一致させることによってテキストを暗号化します。
The..
XXA..
The World...
XXAYSAAZZ etc..
The World is Not Enough etc...
XXAYSAAZZXXAYSAAZZXXAYS etc...
および"exclusively-or-ing"
対応する文字。
module Main where
import System
import Data.Char
main = do arg1 <- getArgs
txt <- getContents
putStr((snd (unzip (zip (txt) (cycle(head arg1))))))
XOR機能:これまでのところ、私はこれを持っている
cat txtfile.txt | ./encrypt XXAYSAAZZ | ./scramble XXAYSAAZZ
:しかし、原因XORの性質のために、私は、このことによって、元のテキストを保持することができるようになっていますData.Bitsにあります。
私はxorを何度も試してみましたが、どのようにテキストを解読するのか分かりません。
いくつか考えてください。テキストがしたのであれば
:
cat txtfile.txt | ./encrypt XXAYSAAZZ
"Hello World, Goodbye World"
それは無限すなわちKEY (XXAYSAAZZ)
で
"XXAYSAAZZXXAYSAAZZXXAYSAAZ"
とcat txtfile.txt | ./encrypt XXAYSAAZZ | ./encrypt XXAYSAAZZ
をテキストに置き換える必要が恩返しをする必要があります
"Hello World, Goodbye World"
を呼び出す場合それは元の文字列を2回返します。
私は暗号化の仕組みを理解していません。それ以上説明できますか? –
キーは出力のテキストを置き換えるはずですので、cat txtfile.txt | ./encrypt 1235423ここで、テキストファイルのテキストは "Hello World"で "12354231235"とし、cat txtfile.txt | ./encrypt 1235423 | ./encrypt 1235423は "Hello World"を返す – DesiBoyz
@DesiBoyzキーが入力を置き換えた場合、入力を戻す方法はありません。暗号化が1対1のマッピングである場合にのみ、入力を戻すことができます。 –