モジュール java.base
パッケージ javax.crypto

クラスCipherOutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
javax.crypto.CipherOutputStream
すべての実装されたインタフェース:
Closeable, Flushable, AutoCloseable

public class CipherOutputStream extends FilterOutputStream
CipherOutputStreamOutputStreamおよびCipherオブジェクトで構成されているため、write()メソッドは、基礎となるOutputStreamに書き出す前にデータを処理します。 Cipherオブジェクトは、CipherOutputStreamで使用する前に完全に初期化する必要があります。

たとえば、Cipherオブジェクトが暗号化用に初期化されている場合、CipherOutputStreamは暗号化されたデータを書き出す前にデータの暗号化を試みます。

このクラスは、上位クラスjava.io.OutputStreamおよびjava.io.FilterOutputStreamのセマンティックス(特にエラーに関するセマンティックス)に厳密に準拠します。 このクラスでは、それらのメソッドは上位クラスで厳密に指定されており、すべてオーバーライドされます。 さらに、このクラスは、上位クラスがスローしない例外をすべてキャッチします。 特に、このクラスは、復号化中に失敗した整合性チェックによってスローされたBadPaddingExceptionおよびその他の例外を捕捉します。 これらの例外は再スローされないため、クライアントは整合性チェックが失敗したことを通知されません。 この動作により、このクラスは、認証が失敗したときにアプリケーションが明示的な通知を必要とする場合に、操作の認証モード(たとえば、GCMなど)の暗号化で使用するのには適していない可能性があります。 このようなアプリケーションは、このクラスを使用するのではなく、Cipher APIを直接使用できます。

このクラスを使用するプログラマが、このクラス(スーパークラスの1つに後で追加される新しいメソッドやコンストラクタなど)で定義またはオーバーライドされていないメソッドを使用しないようにすることが重要です。これらのメソッドの設計および実装は、CipherOutputStreamに関するセキュリティの影響を考慮することはほとんどないためです。

導入されたバージョン:
1.4
関連項目: