Класс 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 Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | CipherInputStream(InputStream is) | Создаёт CipherInputStream из InputStream без указания Cipher. |
CipherInputStream(InputStream is,
Cipher c) | Создаёт CipherInputStream из InputStream и Cipher. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | available() | Возвращает количество байтов, которые могут быть прочитаны из этого потока ввода без блокировки. |
void | close() | Закрывает этот поток ввода и освобождает все системные ресурсы, связанные с потоком. |
boolean | markSupported() | Проверяет, поддерживает ли этот поток ввода методы |
int | read() | Считывает следующий байт данных из этого потока ввода. |
int | read(byte[] b) | Считывает до |
int | read(byte[] b,
int off,
int len) | Считывает до |
long | skip(long n) | Пропускает |
Методы, объявленные в классе java.io.FilterInputStream
mark, reset Методы, объявленные в классе java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, 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- если произошла ошибка ввода-вывода.
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, 2020, 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/11/docs/api/java.base/javax/crypto/CipherInputStream.html