2012-03-14 12 views
-1

私は暗号についてもっと学ぶためにRSAプログラムを書こうとしています。私はJavaを使用していますが、一般的なアドバイスを探しています。より良いプログラミング実践

私の質問は、ファイルの内容を取得し、それを倍のブロックに変換してパワーにする最良の方法は何ですか?

私はhamlet(またはK & RCなど)の全文を含むASCIIテキストファイルを持っています。 私はこれをバイトのブロックに変換し、ブロック全体をパワーアップします。各バイトをパワーアップすると、周波数解析が脆弱になります。

今、ファイルをバイト配列に読み込んで、ダブル配列にキャストし、それをサイズ[64] [file/64]の2次元double配列に変換し、2次元配列連結の各double [すべてのdoubleを文字列に倍精度化し、その文字列をdoubleにキャストします(またはbigintegerにする必要がありますか?)。次に、私の計算を行います。

これはひどく複雑です。

私は2次元配列を使わなくてもそれを行うことができましたが、それはjavaで配列をスライスすることができないため、ブロックを扱う簡単な方法のように思えました。 私にコードを与える必要はありませんが、私はより良いアーキテクチャを探しています。

答えて

0

他の実装を調べて、RSAについてもう少し分かってみるとよいでしょう。なぜならあなたは今かなり失われているからです。ダブルスは使用しないでください。テキスト全体を単一の数字として扱うことはできません。より大きいテキストは常に最初に対称キーで暗号化され、そのキーはRSAキーで暗号化されます。単一のRSA暗号化は、係数より小さい数にしか収まらず、実際はパディングのためにさらに少なくなります。

BigIntegerは良い選択です。正当な理由で素数計算のメソッドがあります。バッキング実装として長い配列を使用しています(Oracle JDKはそうしていますが、他のJava実装でもlongを使用すると仮定しています)。

+0

私はテキスト全体を数字として扱うことはできませんが、すべてのバイトを暗号化すれば、パターンを探すプログラムを作成するのは簡単です – Muricula

+0

テキスト全体を数字として扱うことはできませんが私はちょうどあらゆるバイトを暗号化します、それは頻度分析に落ちます。ブロック全体をパワーアップする必要があります。また、AESのような対称アルゴリズムで何かを暗号化すれば、RSAのポイントは何でしょうか?私はあなたがキーの暗号化に関して何を言っているのか見ていますが、なぜduffie hellman鍵交換を使用しないのですか? 私はdouble型を使用しています。これは、それらが最大の基本データ型だからです。彼らは恋人よりも長い。私はすぐにbigIntegersのためにそれを修正すると思います、私は簡単に始めています。他の実装についてアドバイスしていますか? – Muricula

+0

コメントを編集する際にタイムスタンプをダンプします – Muricula

関連する問題