Spec-Zone.ru › OpenJDK 24

Класс 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

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

Поля, объявленные в классе java.io.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 байтов входных данных из байтов, которые могут быть прочитаны из этого потока без блокировки.

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

mark, reset

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

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

Методы, объявленные в классе java.lang.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
Считывает следующий байт данных из этого входного потока. Значение байта возвращается как целое число в диапазоне от 0 до 255. Если байт недоступен из-за достижения конца потока, возвращается значение -1. Этот метод блокируется до тех пор, пока данные не станут доступны, пока не будет обнаружен конец потока или не будет выброшено исключение.
Overrides:
read в классе FilterInputStream
Возвращает:
следующий байт данных или -1, если достигнут конец потока.
Выбрасывает:
IOException - если произошла ошибка ввода/вывода.
См. также:
  • FilterInputStream.in

read

public int read(byte[] b) throws IOException
Считывает до b.length байтов данных из этого входного потока в массив байтов.

Метод read класса InputStream вызывает метод read с тремя аргументами: b, 0 и b.length.

Overrides:
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 байтов считываются и отбрасываются.
Overrides:
read в классе FilterInputStream
Параметры:
b - буфер, в который считываются данные.
off - начальный смещение в целевом массиве buf
len - максимальное количество считываемых байтов.
Возвращает:
общее количество считанных байтов в буфер, или -1, если больше нет данных из-за достижения конца потока.
Выбрасывает:
IOException - если произошла ошибка ввода/вывода.
См. также:
  • InputStream.read()

skip

public long skip(long n) throws IOException
Пропускает n байт входных данных из байтов, которые могут быть считаны из этого входного потока без блокировки.

Может быть пропущено меньше байтов, чем запрошено. Фактическое количество пропущенных байтов равно n или результату вызова available, в зависимости от меньшего значения. Если n меньше нуля, байты не пропускаются.

Возвращается фактическое количество пропущенных байтов.

Overrides:
skip в классе FilterInputStream
Параметры:
n - количество байтов для пропуска.
Возвращает:
фактическое количество пропущенных байтов.
Выбрасывает:
IOException - если произошла ошибка ввода/вывода.
См. также:
  • InputStream.skipNBytes(long)

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 - если произошла ошибка ввода/вывода.
См. также:
  • FilterInputStream.in

markSupported

public boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset, которых он не поддерживает.
Overrides:
markSupported в классе FilterInputStream
Возвращает:
false, так как этот класс не поддерживает методы mark и reset.
См. также:
  • InputStream.mark(int)
  • InputStream.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

Spec-Zone.ru

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