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