Spec-Zone.ru › OpenJDK 25

Класс 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. Объект Cipher должен быть полностью инициализирован до его использования в CipherInputStream.

Например, если объект Cipher инициализирован для расшифрования, CipherInputStream попытается считать данные и расшифровать их, прежде чем вернуть расшифрованные данные.

Этот класс строго придерживается семантики своих родительских классов, особенно семантики обработки сбоев: java.io.FilterInputStream и java.io.InputStream. В этом классе есть в точности те методы, которые указаны в его родительских классах, и он переопределяет их все. Кроме того, этот класс перехватывает все исключения, не выбрасываемые его родительскими классами. В частности, метод skip пропускает данные, а метод available учитывает только данные, обработанные инкапсулированным объектом Cipher. Этот класс может перехватывать BadPaddingException и другие исключения, выбрасываемые при сбое проверок целостности во время расшифрования. Эти исключения не выбрасываются повторно, поэтому клиент может не узнать о сбое проверок целостности. Из-за такого поведения этот класс может быть непригоден для расшифрования в аутентифицированном режиме работы (например, GCM). Приложения, которым требуется аутентифицированное шифрование, могут напрямую использовать API Cipher вместо этого класса.

Программисту, использующему этот класс, крайне важно не применять методы, которые в этом классе не определены или не переопределены (например, новый метод или конструктор, позднее добавленный в один из суперклассов), поскольку при проектировании и реализации таких методов, вероятно, не учитывалось влияние на безопасность в отношении CipherInputStream.

Начиная с версии:
1.4
См. также:
  • InputStream
  • FilterInputStream
  • Cipher
  • CipherOutputStream

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

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

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

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, 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 — если возникает ошибка ввода-вывода.
См. также:
  • 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/CipherInputStream.html

Spec-Zone.ru

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