Spec-Zone.ru › OpenJDK 27

Класс CipherInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
javax.crypto.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
См. также:
  • InputStream
  • FilterInputStream
  • Cipher
  • CipherOutputStream

Краткое описание полей

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

in
Модификатор и тип Поле Описание
protected InputStream in
Входной поток, подлежащий фильтрации.

Краткое описание конструкторов

CipherInputStream(InputStream is)
CipherInputStream(InputStream is, Cipher c)
Модификатор Конструктор Описание
protected
Создает CipherInputStream из InputStream без указания объекта Cipher.
Создает 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 байтов входных данных, которые можно считать из этого входного потока без блокировки.

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

mark, reset
Модификатор и тип Метод Описание
void mark(int readlimit)
Помечает текущую позицию в этом входном потоке.
void reset()
Перемещает этот поток в позицию, на которой находился входной поток при последнем вызове метода mark.

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Модификатор и тип Метод Описание
static InputStream nullInputStream()
Возвращает новый InputStream, который не считывает ни одного байта.
byte[] readAllBytes()
Считывает все оставшиеся байты из входного потока.
int readNBytes(byte[] b, int off, int len)
Считывает из входного потока указанное количество байтов в заданный массив байтов.
byte[] readNBytes(int len)
Считывает из входного потока не более указанного количества байтов.
void skipNBytes(long n)
Пропускает и отбрасывает ровно n байтов данных из этого входного потока.
long transferTo(OutputStream out)
Считывает все байты из этого входного потока и записывает их в заданный выходной поток в том порядке, в котором они были считаны.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

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 — если произошла ошибка ввода-вывода.
См. также:
  • InputStream.skipNBytes(long)

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()

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API