2016-10-28 4 views
0

私はRSAで暗号化しようとしている大きなファイルを持っています。はい、私はハイブリッド暗号化が通常この場合に使用されることを知っていますが、標準の公開鍵暗号化を使用して効率の違いを確認したいと思います。ブロック単位でファイルを暗号化します

このような大きなファイルを暗号化するには、ブロック単位で暗号化する必要があることを理解しています。受信後、私のバイト配列がRSA-2048で暗号化するには大きすぎると言ったエラーが発生したため、バイト配列を245バイトに減らしました。 246バイトのバイト配列はうまく動作しますが、それは私の問題である246バイトだけでも動作します。 RSA-2048でファイル全体を暗号化する必要があります。

RSA-2048暗号を調べてブロック暗号化をブロックすると、ブロック暗号化をRSA-2048で実装するのは混乱します。これは、どの言語でも暗号化を初めて実装したことです。以下は、RSA公開鍵で大きなファイルを暗号化することに関する私のコードです。

RSAでブロック単位で大きなファイルブロック全体をどのように暗号化できるかについてのご意見をいただければ幸いです。

+0

いいえ、「このケースではハイブリッド暗号化が一般的に使用されていることはわかっていますが、知識のない開発者ではありません。対称暗号と非対称暗号は、その特性に基づいてそれぞれの場所があり、1000台のミニカーを使用して超高層ビル用のコンクリートを提供しないのと同じように使用します。なぜ非対称暗号化(RSA)を使用しているのかという疑問があります。公開鍵と秘密鍵の両方のペアが必要ですか?最後に、これが本番用コードでは決して使用されないことを願っています。 – zaph

答えて

1

まずは、と言っても、RSAをブロック暗号として使用しないでください。これをプロダクションコードで行い、誰かが見つかった場合、あなたはおそらく解雇されるでしょう。

しかし...

  • あなたはFileInputStreamから〜246バイトの件まで読んでください。
  • RSAを使用して、この結果を暗号化します。
  • 暗号化されたブロックをFileOutputStreamに書き込みます。

あなたのコードがあるため、これを行いません:あなたはすぐに暗号文の最初のブロックを返す

  • inputfile= cipher.doFinal(block); return inputfile;

  • あなたは結果を何もしません。
+0

私の更新を見てください。私は何を返すのか混乱している。 –

+0

@SamHunt私はまず最初からやり直すべきだと思っていますし、whileループについて知っていれば、まずI/Oをファイルしてください。あなたのコードは意味をなさない。あなたはそこに戻ってはいけませんし、コードが一回ループするだけですか? –

+0

whileループとファイルI/Oについて読んでいます。私は自分自身を教えているので、先生、私がどこに戻ってくるのか説明できますか?私は混乱していることをお詫びしますが、私はこれに熱心に取り組んでいます。ありがとうございました。 –

関連する問題