2011-07-30 17 views
0

私はファイルを暗号化する非常に効率的な方法を探しています。 私は非常に効率的であると思う方法の1つは、書き込み時にはXORを、読み取り時には別のxor(たとえば4バイトのキーで)を実行しています。XORを使用したJava暗号化ファイル

私がそれをやりたいのは、自分自身のデコレータのInputStreamとOutputStreamを作成することです。誰よりも良い方法を知っている/それよりも効率的ですか?

+4

XOR暗号は、実際には暗号的に強力ではなく、安全でもありません。定数反復鍵を使用することで、単純にXOR暗号を周波数解析を使用して壊すことができます。 –

+1

そうですが、このセキュリティレベルは私の使用例で十分です。 – Alex

+0

しかし、CTRモードが十分に速くないのは確かですか? WikipediaのCTRのページをチェックすると、事前にキーストリームを計算しておき、作成したキーストリームを暗号で排他的論理和(XOR)することができることがすぐに分かります。 –

答えて

1

私がやりたいことは、自分自身のデコレータInputStream とOutputStreamを作成することです。誰もより良い方法を知っている/最も効率的です

FilterInputStreamとFilterOutputStreamのサブクラスを作成します。

+0

もしそうなら、1バイトを取るだけでなく、バ​​イト配列をとる書き込みメソッドを実装してください。出力がどこかにバッファリングされていることを確認してください。 –

+0

こんにちは、あなたはその例を挙げることができますか?私はそれを行う方法がわからないので – R4j

1

XORサイファーはStream Cypherの一例です。時代遅れですが、プログラムするのが簡単です。例はRC4です。 HC-128、Rabbit、Salsa 20/12、SOSEMANUKのような、近代的ではあるが簡単ではない例として、eSTREAMポートフォリオのcypherを見てみましょう。

また、CTRモードで使用されるAESなどのブロックサイファーは、Stream Cypherと同等です。

非常に強力なセキュリティが必要ない場合は、RC4を試してください。それ以外の場合、CTRモードのAESはおそらく最も普及しているため、最も簡単です。

+0

私は、この文脈では「サイファー」の正しい綴りは「暗号」だと信じています。 「サイファー」とはまったく異なる意味を指します。 –

+0

@Delan_Azabani:英国と米国の英語の違いかもしれません。私はイギリス人ですので、私は 'サイファー'を使う傾向がありますが、 'サイファー'も受け入れられます。 – rossum

+0

@Delan Dictionariesは、サイファーと暗号は同等であると言っていますが、暗号化では「暗号」という言葉が使用されています。 –