Класс 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
- См. также:
Краткое описание полей
Поля, объявленные в классе 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 байтов входных данных из доступных для чтения без блокировки данных этого входного потока. |
Методы, объявленные в классе FilterInputStream
mark, reset
Методы, объявленные в классе 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
int в диапазоне от 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, 2025, 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/25/docs/api/java.base/javax/crypto/CipherInputStream.html