2016-04-06 10 views
0

Data.BitsからXORを使用して引数として与えられたKeyで文字列を暗号化しようとしていますが、これをHaskellで作成する方法も学びたいと思っています。XOR Crypt Haskell

私はこのプログラミング言語を初めて使用しているので、自分でこれを行う方法を学びたいと思います。可能であれば、私は今まで私がオフに取り払わ何それ

を行う方法についていくつかのヒントを取得したいと思います:私は本当にそれを暗号化するためにキーを使用する方法がわからない

しかし
encrypt string = map xor $ split "" string 

、どこ私はそれを追加する必要がありますか?たぶん、地図の「キー」時間を繰り返しますか?

関数のシグネチャが 文字列である - > [Word8] - > [Word8] そして私はポイントのないあなたのコメントから判断する

+0

は、入力した長さ(ワンタイムパッドスタイル)と同じ鍵か、*繰り返し*したいと思うキーですか? - 関数は、 'String-> String-> String'または' String-> String-> [Word8] 'または' [Word8] - > [Word8] - > [Word8] 'であるはずです。 – Carsten

+1

今何が問題なのですか: 'zipWith'を見てください – Carsten

+0

@Carstenキーは入力と同じ長さになっているはずですが、文字列からWord8へ、そして逆に –

答えて

1

(唯一の文字列引数で)それを作成しようとしている、あなたがしたいですpointfreeスタイルでこれを持っている:

encrypt = zipWith xor . convertToWord8 

自動的にスタイルをpointfreeする式を変換することができます「pointfree」と呼ばれるツールがあります。

コメント:

  • がポイントフリースタイルをオーバーしないでください。非常に短いスニペット以外のものは、容易に判読できなくなる可能性があります。これは、ポイントフリーのスタイルは式の構造を難読化する可能性があり、有用な変数名を取り除くためです。
  • は、難読化する場合のみを暗号化しないでください。
関連する問題