Класс CipherOutputStream
- Все реализованные интерфейсы:
Closeable, Flushable, AutoCloseable
public class CipherOutputStream extends FilterOutputStream
CipherOutputStream состоит из OutputStream и объекта Cipher, поэтому методы write() сначала обрабатывают данные, а затем записывают их в нижележащий OutputStream. Объект Cipher должен быть полностью инициализирован до его использования CipherOutputStream. Например, если объект Cipher инициализирован для шифрования, CipherOutputStream попытается зашифровать данные перед записью зашифрованных данных.
Этот класс строго придерживается семантики, особенно семантики ошибок, своих классов-предков java.io.OutputStream и java.io.FilterOutputStream. Этот класс содержит ровно те методы, которые определены в его классах-предках, и переопределяет их все. Кроме того, этот класс перехватывает все исключения, которые не выбрасываются его классами-предками. В частности, этот класс перехватывает BadPaddingException и другие исключения, возникающие при неудачной проверке целостности во время расшифрования. Эти исключения не выбрасываются повторно, поэтому клиент не будет уведомлен о сбое проверки целостности. В связи с таким поведением этот класс может быть непригоден для использования при расшифровании в режиме с аутентификацией (например, GCM), если приложению требуется явное уведомление о сбое аутентификации. Такое приложение может использовать API Cipher напрямую вместо этого класса.
Программисту, использующему этот класс, крайне важно не применять методы, которые не определены или не переопределены в этом классе (например, новый метод или конструктор, добавленный позднее в один из суперклассов), поскольку при проектировании и реализации таких методов влияние на безопасность в контексте CipherOutputStream, скорее всего, не учитывалось.
- Начиная с:
- 1.4
- См. также:
Краткое описание полей
Поля, объявленные в классе FilterOutputStream
out
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает CipherOutputStream из OutputStream без указания объекта Cipher. |
|
| Создает CipherOutputStream из OutputStream и объекта Cipher. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот выходной поток и освобождает все системные ресурсы, связанные с ним. |
void |
flush() |
Сбрасывает этот выходной поток, принудительно записывая все буферизованные выходные байты, которые уже были обработаны инкапсулированным объектом Cipher. |
void |
write |
Записывает b.length байт из указанного массива байтов в этот выходной поток. |
void |
write |
Записывает len байт из указанного массива байтов, начиная со смещения off, в этот выходной поток. |
void |
write |
Записывает указанный байт в этот выходной поток. |
Методы, объявленные в классе OutputStream
nullOutputStream
Подробное описание конструкторов
CipherOutputStream
public CipherOutputStream(OutputStream os, Cipher c)
CipherOutputStream из OutputStream и объекта Cipher. Примечание: если указанный выходной поток или шифр равен
null, позднее при их использовании может быть выброшено a NullPointerException.- Параметры:
-
os— объектOutputStream -
c— инициализированный объектCipher
CipherOutputStream
protected CipherOutputStream(OutputStream os)
CipherOutputStream из OutputStream без указания объекта Cipher. В результате создается CipherOutputStream с использованием NullCipher. Примечание: если указанный выходной поток равен
null, позднее при его использовании может быть выброшено NullPointerException.- Параметры:
-
os— объектOutputStream
Подробное описание методов
write
public void write(int b) throws IOException
- Переопределяет:
-
writeв классеFilterOutputStream - Параметры:
-
b—byte. - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода.
write
public void write(byte[] b) throws IOException
b.length байт из указанного массива байтов в этот выходной поток. Метод write класса CipherOutputStream вызывает трехаргументный метод write с аргументами b, 0 и b.length.
- Переопределяет:
-
writeв классеFilterOutputStream - Параметры:
-
b— данные. - Выбрасывает:
-
NullPointerException— еслиbравенnull. -
IOException— если произошла ошибка ввода-вывода. - См. также:
write
public void write(byte[] b, int off, int len) throws IOException
len байт из указанного массива байтов, начиная со смещения off, в этот выходной поток.- Переопределяет:
-
writeв классеFilterOutputStream - Параметры:
-
b— данные. -
off— начальное смещение в данных. -
len— количество байтов для записи. - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
flush
public void flush() throws IOException
Cipher. Байты, буферизованные инкапсулированным объектом Cipher и ожидающие обработки этим объектом, записаны не будут. Например, если инкапсулированный объект Cipher является блочным шифром, а общее количество байтов, записанных с помощью одного из методов write, меньше размера блока шифра, байты записаны не будут.
- Определено в:
-
flushв интерфейсеFlushable - Переопределяет:
-
flushв классеFilterOutputStream - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
close
public void close() throws IOException
Этот метод вызывает метод doFinal инкапсулированного объекта Cipher, в результате чего обрабатываются все байты, буферизованные инкапсулированным объектом Cipher. Результат записывается вызовом метода flush этого выходного потока.
Этот метод сбрасывает инкапсулированный объект Cipher в исходное состояние и вызывает метод close нижележащего выходного потока.
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеFilterOutputStream - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/CipherOutputStream.html