アムと比較。
私のニーズに合った城を使用しています
私は通常大きなデータ(512MB +)のストリームを暗号化する必要があります。 暗号化のオーバーヘッドを理解するためにパフォーマンステストを実行すると、暗号化されていないデータよりも暗号化が30-40%ほど高価になることがわかりました。 これは予想されますか?JavaのAES/CBC/PKCS5Paddingストリームの暗号化性能を持つ公開鍵AES/CBC/PKCS5Paddingを使用して自分のデータを暗号化し、16バイトのランダム鍵を暗号化RSAキー/ペアを使用して標準的な技術を使用して暗号化なし
サンプルコード
public InputStream encryptStream(InputStream streamToEncrypt, byte[] key, byte[] iv, byte[] encryptedKey // 256 bytes) {
final Cipher cipher = getCipher(Cipher.ENCRYPT_MODE, key, iv);
byte[] civ = cipher.getIV();
...
ByteArrayInputStream ivEncryptedKeyStream = new ByteArrayInputStream(ivEncryptedKeyArray);
CipherInputStream encrypted = new CipherInputStream(streamToEncrypt, cipher);
return new SequenceInputStream(ivEncryptedKeyStream, encrypted);
}
他の場所
InputStream encryptedStream = ...encryptStream(plainStream, key, iv, encKey);
IOUtils.copyLarge(encryptedStream, outputStream);
私はJavaサーバの引数と周り果たしています。 AES-NIの命令セットがオンになっていることを確認しました。 大きなストリームを暗号化する際に予想されるオーバーヘッドについて考えてみたいですか?
編集:私はちょうど鍵ペアの生成にはBouncyCastle使用しています修正された情報。セキュリティプロバイダとしてSunJCEを使用するAES暗号化用。
は、あなたがチェックしましたか? [AES-NI組み込み関数はデフォルトで有効になっていますか?](http://stackoverflow.com/questions/23058309/aes-ni-intrinsics-enabled-by-default) – Robert
ありがとうございます。私はこれらの引数を試してみたところ、-server引数でパフォーマンスがわずかに向上することも確認しました。私はこのことについてさらに詳しく見ていきます。 – sunny