Класс 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.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- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
- См. также:
FilterInputStream.in
read
public int read(byte[] b)
throws IOException Считывает до b.length байтов данных из этого входного потока в массив байтов.
Метод read класса InputStream вызывает метод read с тремя аргументами с аргументами b, 0, и b.length.
- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если больше нет данных из-за достижения конца потока. - Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
- См. также:
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- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
- См. также:
InputStream.read()
skip
public long skip(long n)
throws IOException Пропускает n байт ввода из байтов, которые можно прочитать из этого входного потока без блокировки.
Возможно, будет пропущено меньше байтов, чем запрошено. Фактическое количество пропущенных байтов равно n или результату вызова available, в зависимости от меньшего значения. Если n меньше нуля, байты не пропускаются.
Возвращается фактическое количество пропущенных байтов.
- Переопределяет:
-
skipв классеFilterInputStream - Параметры:
-
n- количество байтов, которые нужно пропустить. - Возвращает:
- фактическое количество пропущенных байтов.
- Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
available
public int available()
throws IOException Возвращает количество байтов, которые можно прочитать из этого входного потока без блокировки. Метод available класса InputStream возвращает 0. Этот метод должен быть переопределён подклассами.
- Переопределяет:
-
availableв классеFilterInputStream - Возвращает:
- количество байтов, которые можно прочитать из этого входного потока без блокировки.
- Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
close
public void close()
throws IOException Закрывает этот входной поток и освобождает все системные ресурсы, связанные с потоком.
Метод close класса CipherInputStream вызывает метод close своего базового входного потока.
- Определено в:
-
closeв интерфейсеCloseable - Определено в:
-
closeв интерфейсеAutoCloseable - Переопределяет:
-
closeв классеFilterInputStream - Исключения:
-
IOException- если произошла ошибка ввода-вывода. - С момента:
- JCE1.2
- См. также:
FilterInputStream.in
markSupported
public boolean markSupported()
Проверяет, поддерживает ли этот входной поток методы mark и reset, чего он не делает.
- Переопределяет:
-
markSupportedв классеFilterInputStream - Возвращает:
-
false, так как этот класс не поддерживает методыmarkиreset. - С момента:
- JCE1.2
- См. также:
-
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.