私はJavaで行う必要があるRSAアプリケーションに問題があります。RSA(Java)で長い文字列を暗号化
ファイルから文字列を読み取り、暗号化してから、暗号化された文字列を新しいファイルに保存する必要があります。
私のRSAキーの長さは1024ビットです。
問題があるコードの一部で、以下の通りです:変数は次のように定義されている
readBytes = in.read(bytesToBeEncoded, 0, bytesToBeEncoded.length);
while(readBytes != -1){
encodedContent = ciph.update(bytesToBeEncoded, 0, readBytes);
out.write(encodedContent);
bytesToBeEncoded= new byte[(KEY_SIZE/8)-11];
readBytes = in.read(bytesToBeEncoded, 0, bytesToBeEncoded.length);
}
encodedContent = ciph.doFinal();
out.write(encodedContent);
:
byte[] bytesToBeEncoded = new byte[(KEY_SIZE/8)-11];
FileInputStream in = new FileInputStream(new File(file1));
FileOutputStream out = new FileOutputStream(new File(file2));
int readBytes;
点は、私はあまりthan-を暗号化する場合117バイト文字列は、それが(暗号化した後、ウェル解読)完璧に動作するが、サイズが大きい場合、アプリケーションはこの例外をスロー:
javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
スロー
:
encodedContent = ciph.doFinal();
問題があると私は何をする必要がどこか分かりません。
誰でもお手伝いできますか?ありがとうございました。
私の英語については残念です。
本当にRSAでデータを暗号化する必要はありますか?標準パターンは、RSAでランダムな対称鍵を暗号化し、その対称鍵で実際のデータを暗号化することです。 – CodesInChaos
CodeInChaosを聞いて、RSA鍵で直接データを暗号化しないでください。それはすべての良い習慣に違反している。さらに、あなたのバッファサイズは入力サイズに全く関係していてはなりません。 –