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

クラスCipherInputStream

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable

    public class CipherInputStream
    extends FilterInputStream
    CipherInputStreamはInputStreamとCipherで構成されているので、read()メソッドはベースとなるInputStreamから読み込まれたデータを返しますが、Cipherにより追加の処理が行われています。 Cipherは、完全に初期化してからでないと、CipherInputStreamで使用できません。

    たとえば、Cipherが復号化用に初期化されていると、CipherInputStreamは、復号化されたデータを返す前に、データを読み込んで復号化しようとします。

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

    このクラスを使用するプログラマにとって、このクラスで定義またはオーバーライドされていないメソッド(上位クラスのいずれかにあとで追加された新規メソッドまたはコンストラクタ)を使用しないようにすることは重要です。これらのメソッド実装は、CipherInputStreamへのセキュリティ面の影響を考慮に入れていないためです。

    導入されたバージョン:
    1.4
    関連項目:
    InputStream, FilterInputStream, Cipher, CipherOutputStream
    • フィールドのサマリー

    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected CipherInputStream​(InputStream is)
      InputStreamからCipherを指定しないでCipherInputStreamを構築します。
        CipherInputStream​(InputStream is, Cipher c)
      InputStreamおよびCipherからCipherInputStreamを構築します。
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      int available()
      ブロックせずに入力ストリームから読み込むことができるバイト数を返します。
      void close()
      この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
      boolean markSupported()
      この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。
      int read()
      この入力ストリームからデータの次のバイトを読み込みます。
      int read​(byte[] b)
      最大b.lengthバイトのデータを、この入力ストリームからバイト配列に読み込みます。
      int read​(byte[] b, int off, int len)
      最大lenバイトのデータを、この入力ストリームからバイト配列に読み込みます。
      long skip​(long n)
      ブロックせずにこの入力ストリームから読み込むことができるバイトからnバイトの入力をスキップします。
    • コンストラクタの詳細

      • CipherInputStream

        public CipherInputStream​(InputStream is,
                                 Cipher c)
        InputStreamおよびCipherからCipherInputStreamを構築します。
        注: 指定された入力ストリームまたは暗号がnullの場合は、それらの使用時にNullPointerExceptionがスローされる可能性があります。
        パラメータ:
        is - 処理される入力ストリーム
        c - 初期化されたCipherオブジェクト
      • CipherInputStream

        protected CipherInputStream​(InputStream is)
        InputStreamからCipherを指定しないでCipherInputStreamを構築します。 これは、NullCipherを使用してCipherInputStreamを構築する効果を持ちます。
        注: 指定された入力ストリームがnullの場合は、それの使用時にNullPointerExceptionがスローされる可能性があります。
        パラメータ:
        is - 処理される入力ストリーム
    • メソッドの詳細

      • read

        public int read()
                 throws IOException
        この入力ストリームからデータの次のバイトを読み込みます。 バイト値は、0 - 255の範囲のintとして返されます。 ストリームの終わりに達したために読み込むバイトがない場合は、-1が返されます。 入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。
        オーバーライド:
        read、クラス: FilterInputStream
        戻り値:
        データの次のバイト。ストリームの終わりに達した場合は-1
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        FilterInputStream.in
      • read

        public int read​(byte[] b)
                 throws IOException
        最大b.lengthバイトのデータを、この入力ストリームからバイト配列に読み込みます。

        InputStreamreadメソッドは、引数b0、およびb.lengthの3つの引数をとるreadメソッドを呼び出します。

        オーバーライド:
        read、クラス: FilterInputStream
        パラメータ:
        b - データの読込み先のバッファ。
        戻り値:
        バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は-1
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        InputStream.read(byte[], int, int)
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws IOException
        最大lenバイトのデータを、この入力ストリームからバイト配列に読み込みます。 このメソッドは、入力の一部が利用できるようになるまでブロックします。 最初の引数がnullの場合は、lenまでのバイトが読み込まれたあと廃棄されます。
        オーバーライド:
        read、クラス: FilterInputStream
        パラメータ:
        b - データの読込み先のバッファ。
        off - 転送先配列の開始オフセットbuf
        len - 読み込まれる最大バイト数。
        戻り値:
        バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は-1
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        InputStream.read()
      • skip

        public long skip​(long n)
                  throws IOException
        ブロックせずにこの入力ストリームから読み込むことができるバイトからnバイトの入力をスキップします。

        スキップされるバイトが要求されたバイトより少ない場合があります。 実際にスキップされたバイト数は、nまたはavailableを呼び出した結果のうち小さい方です。 nがゼロより小さい場合、バイトはスキップされません。

        スキップされた実際のバイト数が返されます。

        オーバーライド:
        skip、クラス: FilterInputStream
        パラメータ:
        n - スキップされるバイト数。
        戻り値:
        実際にスキップされたバイト数。
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        InputStream.skipNBytes(long)
      • available

        public int available()
                      throws IOException
        ブロックせずに入力ストリームから読み込むことができるバイト数を返します。 InputStreamavailableメソッドは0を返します。 サブクラスはこのメソッドをオーバーライドする必要があります
        オーバーライド:
        available、クラス: FilterInputStream
        戻り値:
        ブロックしないで入力ストリームから読み込むことができるバイト数。
        例外:
        IOException - 入出力エラーが発生した場合。
      • close

        public void close()
                   throws IOException
        この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。

        CipherInputStreamcloseメソッドはそのベースとなる入力ストリームのcloseメソッドを呼び出します。

        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        オーバーライド:
        close、クラス: FilterInputStream
        例外:
        IOException - 入出力エラーが発生した場合。
        関連項目:
        FilterInputStream.in
      • markSupported

        public boolean markSupported()
        この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。
        オーバーライド:
        markSupported、クラス: FilterInputStream
        戻り値:
        このクラスはmarkメソッドとresetメソッドをサポートしていないので、false
        関連項目:
        InputStream.mark(int), InputStream.reset()