Класс 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. Этот метод блокируется до тех пор, пока данные не станут доступны, пока не будет обнаружен конец потока или не будет выброшено исключение.- Overrides:
-
readв классеFilterInputStream - Возвращает:
- следующий байт данных или
-1, если достигнут конец потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
read
public int read(byte[] b) throws IOException
b.length байтов данных из этого входного потока в массив байтов. Метод read класса InputStream вызывает метод read с тремя аргументами: b, 0 и b.length.
- Overrides:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. - Возвращает:
- общее количество считанных байтов в буфер, или
-1, если больше нет данных из-за достижения конца потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
read
public int read(byte[] b, int off, int len) throws IOException
len байтов данных из этого входного потока в массив байтов. Этот метод блокируется до тех пор, пока не появятся данные. Если первый аргумент равен null, до len байтов считываются и отбрасываются.- Overrides:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. -
off- начальный смещение в целевом массивеbuf -
len- максимальное количество считываемых байтов. - Возвращает:
- общее количество считанных байтов в буфер, или
-1, если больше нет данных из-за достижения конца потока. - Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
skip
public long skip(long n) throws IOException
n байт входных данных из байтов, которые могут быть считаны из этого входного потока без блокировки. Может быть пропущено меньше байтов, чем запрошено. Фактическое количество пропущенных байтов равно n или результату вызова available, в зависимости от меньшего значения. Если n меньше нуля, байты не пропускаются.
Возвращается фактическое количество пропущенных байтов.
- Overrides:
-
skipв классеFilterInputStream - Параметры:
-
n- количество байтов для пропуска. - Возвращает:
- фактическое количество пропущенных байтов.
- Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
available
public int available() throws IOException
available класса InputStream возвращает 0. Этот метод должен быть переопределён подклассами.- Overrides:
-
availableв классеFilterInputStream - Возвращает:
- количество байтов, которые могут быть считаны из этого входного потока без блокировки.
- Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода.
close
public void close() throws IOException
Метод close класса CipherInputStream вызывает метод close своего базового входного потока.
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable - Overrides:
-
closeв классеFilterInputStream - Выбрасывает:
-
IOException- если произошла ошибка ввода/вывода. - См. также:
markSupported
public boolean markSupported()
mark и reset, которых он не поддерживает.- Overrides:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/CipherInputStream.html