Класс 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). Приложения, которым требуется аутентифицированное шифрование, могут использовать API Cipher напрямую как альтернативу использованию этого класса.

Важно для программиста, использующего этот класс, не использовать методы, которые не определены или не переопределены в этом классе (например, новый метод или конструктор, который позже добавлен в один из родительских классов), потому что дизайн и реализация этих методов вряд ли учли последствия для безопасности в отношении CipherInputStream.

С:
1.4
См. также:
InputStream, FilterInputStream, Cipher, CipherOutputStream

Поля

Поля, объявленные в классе java.io.FilterInputStream

in

Конструкторы

Модификатор Конструктор Описание
protected CipherInputStream​(InputStream is)

Создаёт CipherInputStream из InputStream без указания Cipher.

CipherInputStream​(InputStream is, Cipher c)

Создаёт CipherInputStream из InputStream и Cipher.

Методы

Модификатор и тип Метод Описание
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 байт ввода из байтов, которые можно прочитать из этого потока ввода без блокировки.

Методы, объявленные в классе java.io.FilterInputStream

mark, reset

Методы, объявленные в классе java.io.InputStream

nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

CipherInputStream

public CipherInputStream(InputStream is,
                         Cipher c)

Создаёт CipherInputStream из InputStream и Cipher.
Примечание: если указанный входной поток или шифр равен null, позже при их использовании может быть выброшено исключение NullPointerException.

Параметры:
is - обрабатываемый входной поток
c - инициализированный объект Cipher

CipherInputStream

protected CipherInputStream(InputStream is)

Создаёт CipherInputStream из InputStream без указания Cipher. Это эквивалентно созданию CipherInputStream с использованием NullCipher.
Примечание: если указанный входной поток равен null, позже при его использовании может быть выброшено исключение NullPointerException.

Параметры:
is - обрабатываемый входной поток

Методы

read

public int read()
         throws IOException

Считывает следующий байт данных из этого входного потока. Значение байта возвращается как int в диапазоне 0 до 255. Если байт недоступен, так как достигнут конец потока, возвращается значение -1. Этот метод блокируется до тех пор, пока данные ввода не станут доступны, не будет обнаружен конец потока или не будет выброшено исключение.

Переопределяет:
read в классе FilterInputStream
Возвращает:
следующий байт данных или -1 при достижении конца потока.
Исключение:
IOException - если произошла ошибка ввода-вывода.
См. также:
FilterInputStream.in

read

public int read(byte[] b)
         throws IOException

Считывает до b.length байтов данных из этого входного потока в массив байтов.

Метод read класса InputStream вызывает метод read с тремя аргументами с аргументами b, 0, и b.length.

Переопределяет:
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 - если произошла ошибка ввода-вывода.

available

public int available()
              throws IOException

Возвращает количество байтов, которые могут быть прочитаны из этого входного потока без блокировки. Метод available класса InputStream возвращает 0. Этот метод должен быть переопределён подклассами.

Переопределяет:
available в классе FilterInputStream
Возвращает:
количество байтов, которые могут быть прочитаны из этого входного потока без блокировки.
Исключение:
IOException - если произошла ошибка ввода-вывода.

close

public void close()
           throws IOException

Закрывает этот входной поток и высвобождает любые системные ресурсы, связанные с потоком.

Метод close класса CipherInputStream вызывает метод close своего базового входного потока.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Переопределяет:
close в классе FilterInputStream
Исключение:
IOException - если произошла ошибка ввода-вывода.
См. также:
FilterInputStream.in

markSupported

public boolean markSupported()

Проверяет, поддерживает ли этот входной поток методы mark и reset, которых он не поддерживает.

Переопределяет:
markSupported в классе FilterInputStream
Возвращает:
false, так как этот класс не поддерживает методы mark и reset.
См. также:
InputStream.mark(int), InputStream.reset()

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/CipherInputStream.html

Spec-Zone .ru
спецификации, руководства, описания, API