Класс CipherOutputStream

Все реализованные интерфейсы:
Closeable, Flushable, AutoCloseable
public class CipherOutputStream
extends FilterOutputStream

CipherOutputStream состоит из OutputStream и Cipher, поэтому методы write() сначала обрабатывают данные, прежде чем записать их в базовый OutputStream. Шифр должен быть полностью инициализирован перед использованием CipherOutputStream.

Например, если шифр инициализирован для шифрования, CipherOutputStream попытается зашифровать данные перед записью зашифрованных данных.

Этот класс строго придерживается семантики, особенно семантики ошибок, своих предков классов java.io.OutputStream и java.io.FilterOutputStream. Этот класс имеет ровно те методы, которые указаны в его родительских классах, и переопределяет их все. Более того, этот класс перехватывает все исключения, которые не выбрасываются его предками. В частности, этот класс перехватывает BadPaddingException и другие исключения, выбрасываемые при неудачной проверке целостности во время дешифрования. Эти исключения не перебрасываются, поэтому клиент не будет уведомлен о том, что проверки целостности не пройдены. Из-за этого поведения этот класс может быть неподходящим для использования при дешифровании в режиме аутентификации (например, GCM), если приложение требует явного уведомления об ошибках аутентификации. Такое приложение может напрямую использовать API шифра в качестве альтернативы использованию этого класса.

Для программистов, использующих этот класс, крайне важно не использовать методы, которые не определены или не переопределены в этом классе (например, новый метод или конструктор, который позже будет добавлен в один из родительских классов), поскольку дизайн и реализация этих методов вряд ли учтут влияние на безопасность CipherOutputStream.

С тех пор:
1.4
См. также:
OutputStream, FilterOutputStream, Cipher, CipherInputStream

Поля

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

out

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

Модификатор Конструктор Описание
protected CipherOutputStream​(OutputStream os)

Создает CipherOutputStream из OutputStream без указания Cipher.

CipherOutputStream​(OutputStream os, Cipher c)

Создает CipherOutputStream из OutputStream и Cipher.

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

Модификатор и тип Метод Описание
void close()

Закрывает этот поток вывода и высвобождает все системные ресурсы, связанные с этим потоком.

void flush()

Очищает этот поток вывода, заставляя все буферизованные байты вывода, которые уже были обработаны объектом обернутого шифра, быть записанными.

void write​(byte[] b)

Записывает b.length байт из указанного массива байтов в этот поток вывода.

void write​(byte[] b, int off, int len)

Записывает len байт из указанного массива байтов, начиная с смещения off, в этот поток вывода.

void write​(int b)

Записывает указанный байт в этот поток вывода.

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

nullOutputStream

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

CipherOutputStream

public CipherOutputStream(OutputStream os,
                          Cipher c)

Создает CipherOutputStream из OutputStream и Cipher.
Примечание: если указанный поток вывода или шифр равен null, может быть выброшено исключение 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 - байт.
Исключения:
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

Очищает этот поток вывода, заставляя все буферизованные байты вывода, которые уже были обработаны объектом обернутого шифра, быть записанными.

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

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

close

public void close()
           throws IOException

Закрывает этот поток вывода и высвобождает все системные ресурсы, связанные с этим потоком.

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

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

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

© 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/CipherOutputStream.html

Spec-Zone .ru
спецификации, руководства, описания, API