Класс 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. Шифр должен быть полностью инициализирован перед использованием 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) |
Записывает |
void |
write(byte[] b,
int off,
int len) |
Записывает |
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