Класс CipherInputStream
- Все реализованные интерфейсы:
Closeable, AutoCloseable
public class CipherInputStream extends FilterInputStream
CipherInputStream состоит из InputStream и объекта Cipher, поэтому методы read() возвращают данные, считанные из базового InputStream, но дополнительно обработанные объектом Cipher. Перед использованием в CipherInputStream объект Cipher должен быть полностью инициализирован. Например, если объект Cipher инициализирован для расшифрования, CipherInputStream попытается считать данные и расшифровать их, прежде чем вернуть расшифрованные данные.
Этот класс строго придерживается семантики, особенно семантики сбоев, своих классов-предков java.io.FilterInputStream и java.io.InputStream. В этом классе есть только те методы, которые определены в классах-предках, и все они переопределены. Кроме того, этот класс перехватывает все исключения, которые не выбрасываются его классами-предками. В частности, метод skip пропускает данные, а метод available подсчитывает только данные, обработанные инкапсулированным объектом Cipher. Этот класс может перехватывать BadPaddingException и другие исключения, возникающие при сбое проверки целостности во время расшифрования. Эти исключения не выбрасываются повторно, поэтому клиент может не узнать о сбое проверки целостности. Из-за такого поведения этот класс может быть непригоден для расшифрования в режиме аутентифицированного шифрования (например, GCM). Приложения, которым требуется аутентифицированное шифрование, могут использовать API Cipher напрямую вместо этого класса.
Программисту, использующему этот класс, крайне важно не вызывать методы, которые в нём не определены и не переопределены (например, новый метод или конструктор, позднее добавленный в один из суперклассов), поскольку при разработке и реализации этих методов, вероятнее всего, не учитывалось влияние на безопасность в контексте CipherInputStream.
- Начиная с:
- 1.4
- См. также:
Краткое описание полей
Поля, объявленные в классе FilterInputStream
in | Модификатор и тип | Поле | Описание |
|---|---|---|
protected InputStream |
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
mark |
Помечает текущую позицию в этом входном потоке. |
void |
reset() |
Перемещает этот поток в позицию, на которой находился входной поток при последнем вызове метода mark. |
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не считывает ни одного байта. |
byte[] |
readAllBytes() |
Считывает все оставшиеся байты из входного потока. |
int |
readNBytes |
Считывает из входного потока указанное количество байтов в заданный массив байтов. |
byte[] |
readNBytes |
Считывает из входного потока не более указанного количества байтов. |
void |
skipNBytes |
Пропускает и отбрасывает ровно n байтов данных из этого входного потока. |
long |
transferTo |
Считывает все байты из этого входного потока и записывает их в заданный выходной поток в том порядке, в котором они были считаны. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
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— если произошла ошибка ввода-вывода. - См. также:
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.