Класс CipherInputStream
- Все реализованные интерфейсы:
-
Closeable,AutoCloseable
public class CipherInputStream extends FilterInputStream
Например, если Cipher инициализирован для дешифрования, CipherInputStream будет пытаться считать данные и дешифровать их, прежде чем вернуть дешифрованные данные.
Этот класс строго придерживается семантики, особенно семантики ошибок, своих предков java.io.FilterInputStream и java.io.InputStream. Этот класс имеет ровно те методы, которые определены в своих родительских классах, и переопределяет их все. Более того, этот класс перехватывает все исключения, которые не выбрасываются его предками. В частности, метод skip пропускает, а метод available считает только данные, которые были обработаны инкапсулированным Cipher. Этот класс может перехватывать BadPaddingException и другие исключения, возникающие при неудачных проверках целостности во время дешифрования. Эти исключения не перебрасываются, поэтому клиент может не быть проинформирован о том, что проверки целостности не пройдены. Из-за этого поведения этот класс может не подходить для использования с дешифрованием в аутентифицированном режиме работы (например, GCM). Приложения, которые требуют аутентифицированного шифрования, могут использовать API Cipher напрямую как альтернативу этому классу.
Для программистов, использующих этот класс, крайне важно не использовать методы, которые не определены или не переопределены в этом классе (например, новый метод или конструктор, который позже добавлен в один из родительских классов), поскольку дизайн и реализация этих методов вряд ли учитывали влияние на безопасность в отношении CipherInputStream.
- С момента:
- 1.4
- См. также:
Краткое описание полей
Поля, объявленные в классе java.io.FilterInputStream
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 байтов входных данных из байтов, которые можно прочитать из этого потока ввода без блокировки. |
Методы, объявленные в классе java.io.FilterInputStream
mark, reset
Методы, объявленные в классе java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание конструкторов
CipherInputStream
public CipherInputStream(InputStream is, Cipher c)
Примечание: если переданный входной поток или шифр равен null, впоследствии при их использовании может быть выброшено исключение NullPointerException.
- Параметры:
-
is- входной поток для обработки -
c- инициализированный объект Cipher
CipherInputStream
protected CipherInputStream(InputStream is)
Примечание: если переданный входной поток равен 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, 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