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

クラスCipherInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
javax.crypto.CipherInputStream
すべての実装されたインタフェース:
Closeable, AutoCloseable

public class CipherInputStream extends FilterInputStream
CipherInputStreamInputStreamおよびCipherオブジェクトで構成されているため、read()メソッドは、基礎となるInputStreamから読み取られたが、さらにCipherオブジェクトによって処理されたデータを返します。 Cipherオブジェクトは、CipherInputStreamで使用する前に完全に初期化する必要があります。

たとえば、Cipherオブジェクトが復号化用に初期化されている場合、復号化されたデータを返す前に、CipherInputStreamはデータの読取りと復号化を試みます。

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

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

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