Класс 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
- См. также:
Краткое описание полей
Поля, объявленные в классе java.io.FilterInputStream
in
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект CipherInputStream из объекта InputStream без указания объекта Cipher. |
|
| Создаёт объект CipherInputStream из объекта InputStream и объекта Cipher. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки. |
void |
close() |
Закрывает этот поток ввода и высвобождает все системные ресурсы, связанные с потоком. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот поток ввода методы mark и reset, чего он не делает. |
int |
read() |
Читает следующий байт данных из этого потока ввода. |
int |
read |
Читает до b.length байтов данных из этого потока ввода в массив байтов. |
int |
read |
Читает до len байтов данных из этого потока ввода в массив байтов. |
long |
skip |
Пропускает n байтов ввода из байтов, которые можно прочитать из этого потока ввода без блокировки. |
Методы, объявленные в классе java.io.FilterInputStream
mark, reset
Методы, объявленные в классе java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание конструкторов
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
0 до 255. Если байт недоступен, потому что достигнут конец потока, возвращается значение -1. Этот метод блокируется, пока данные ввода не станут доступны, не будет обнаружен конец потока или не будет выброшено исключение.- Переопределяет:
-
readв классеFilterInputStream - Возвращает:
- следующий байт данных или
-1в случае достижения конца потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b) throws IOException
b.length байтов данных из этого входного потока в массив байтов. Метод read из InputStream вызывает метод read с тремя аргументами со значениями b, 0, и b.length.
- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1если больше данных недоступно из-за достижения конца потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b, int off, int len) throws IOException
len байтов данных из этого входного потока в массив байтов. Этот метод блокируется, пока не появятся данные ввода. Если первый аргумент null, до len байтов считываются и отбрасываются.- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. -
off- начальный смещение в целевом массивеbuf -
len- максимальное количество считываемых байтов. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1если больше данных недоступно из-за достижения конца потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
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- если произошла ошибка ввода-вывода. - См. также:
markSupported
public boolean markSupported()
mark и reset, чего он не делает.- Переопределяет:
-
markSupportedв классеFilterInputStream - Возвращает:
-
false, так как этот класс не поддерживает методыmarkиreset. - См. также:
© 1993, 2023, 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/21/docs/api/java.base/javax/crypto/CipherInputStream.html