Spec-Zone.ru › OpenJDK 17

Класс 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
Считывает следующий байт данных из этого потока ввода. Значение байта возвращается как 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()

© 1993, 2021, 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/17/docs/api/java.base/javax/crypto/CipherInputStream.html

Spec-Zone.ru

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