CipherOutputStreampublic class CipherOutputStream extends FilterOutputStream This class wraps an output stream and a cipher so that {@code write} methods
send the data through the cipher before writing them to the underlying output
stream.
The cipher must be initialized for the requested operation before being used
by a {@code CipherOutputStream}. For example, if a cipher initialized for
encryption is used with a {@code CipherOutputStream}, the {@code
CipherOutputStream} tries to encrypt the data writing it out.
|
Fields Summary |
---|
private final Cipher | cipher | private final byte[] | arr |
Constructors Summary |
---|
public CipherOutputStream(OutputStream os, Cipher c)Creates a new {@code CipherOutputStream} instance for an {@code
OutputStream} and a {@code Cipher}.
super(os);
cipher = c;
| protected CipherOutputStream(OutputStream os)Creates a new {@code CipherOutputStream} instance for an {@code
OutputStream} without a cipher.
A {@code NullCipher} is created to process the data.
this(os, new NullCipher());
|
Methods Summary |
---|
public void | close()Close this cipher output stream.
On the underlying cipher {@code doFinal} will be invoked, and any
buffered bytes from the cipher are also written out, and the cipher is
reset to its initial state. The underlying output stream is also closed.
byte[] result;
try {
if (cipher != null) {
result = cipher.doFinal();
if (result != null) {
out.write(result);
}
}
if (out != null) {
out.flush();
}
} catch (BadPaddingException e) {
throw new IOException(e.getMessage());
} catch (IllegalBlockSizeException e) {
throw new IOException(e.getMessage());
} finally {
if (out != null) {
out.close();
}
}
| public void | flush()Flushes this cipher output stream.
out.flush();
| public void | write(int b)Writes the single byte to this cipher output stream.
byte[] result;
arr[0] = (byte) b;
result = cipher.update(arr);
if (result != null) {
out.write(result);
}
| public void | write(byte[] b)Writes the buffer of bytes to this cipher output stream.
write(b, 0, b.length);
| public void | write(byte[] b, int off, int len)Writes the {@code len} bytes from buffer {@code b} starting at offset
{@code off} to this cipher output stream.
if (len == 0) {
return;
}
byte[] result = cipher.update(b, off, len);
if (result != null) {
out.write(result);
}
|
|