Spec-Zone.ru › OpenJDK 27

Класс CipherOutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
javax.crypto.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
См. также:
  • OutputStream
  • FilterOutputStream
  • Cipher
  • CipherInputStream

Краткое описание полей

Поля, объявленные в классе FilterOutputStream

out
Модификатор и тип Поле Описание
protected OutputStream out
Базовый выходной поток, к которому применяется фильтрация.

Краткое описание конструкторов

CipherOutputStream(OutputStream os)
CipherOutputStream(OutputStream os, Cipher c)
Модификатор Конструктор Описание
protected
Создает CipherOutputStream на основе OutputStream без указания объекта Cipher.
Создает CipherOutputStream на основе OutputStream и объекта Cipher.

Краткое описание методов

Модификатор и тип Метод Описание
void close()
Закрывает этот выходной поток и освобождает все системные ресурсы, связанные с ним.
void flush()
Сбрасывает этот выходной поток, записывая все буферизованные выходные байты, уже обработанные инкапсулированным объектом Cipher.
void write(byte[] b)
Записывает b.length байт из указанного массива байтов в этот выходной поток.
void write(byte[] b, int off, int len)
Записывает len байт из указанного массива байтов, начиная со смещения off, в этот выходной поток.
void write(int b)
Записывает указанный байт в этот выходной поток.

Методы, объявленные в классе OutputStream

nullOutputStream
Модификатор и тип Метод Описание
static OutputStream nullOutputStream()
Возвращает новый OutputStream, который отбрасывает все байты.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного промежутка времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения указанного промежутка времени.

Подробное описание конструкторов

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(byte[], int, int)

write

public void write(byte[] b, int off, int len) throws IOException
Записывает len байт из указанного массива байтов, начиная со смещения off, в этот выходной поток.
Переопределяет:
write в классе FilterOutputStream
Параметры:
b — данные.
off — начальное смещение в данных.
len — количество записываемых байтов.
Исключения:
IOException — если возникает ошибка ввода-вывода.
См. также:
  • FilterOutputStream.write(int)

flush

public void flush() throws IOException
Сбрасывает этот выходной поток, записывая все буферизованные выходные байты, уже обработанные инкапсулированным объектом Cipher.

Байты, буферизованные инкапсулированным объектом Cipher и ожидающие обработки этим объектом, записаны не будут. Например, если инкапсулированный объект Cipher — блочный шифр, а общее количество байтов, записанных с помощью одного из методов write, меньше размера блока шифра, ни один байт записан не будет.

Определено в:
flush в интерфейсе Flushable
Переопределяет:
flush в классе FilterOutputStream
Исключения:
IOException — если возникает ошибка ввода-вывода.
См. также:
  • FilterOutputStream.out

close

public void close() throws IOException
Закрывает этот выходной поток и освобождает все системные ресурсы, связанные с ним.

Этот метод вызывает метод doFinal инкапсулированного объекта Cipher, в результате чего обрабатываются все байты, буферизованные инкапсулированным объектом Cipher. Результат записывается вызовом метода flush этого выходного потока.

Этот метод возвращает инкапсулированный объект Cipher в исходное состояние и вызывает метод close базового выходного потока.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Closeable
Переопределяет:
close в классе FilterOutputStream
Исключения:
IOException — если возникает ошибка ввода-вывода.
См. также:
  • FilterOutputStream.flush()
  • FilterOutputStream.out

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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