@Internal public abstract class ChunkedCipherOutputStream extends java.io.FilterOutputStream
Constructor and Description |
---|
ChunkedCipherOutputStream(DirectoryNode dir, int chunkSize) |
ChunkedCipherOutputStream(java.io.OutputStream stream, int chunkSize) |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
calculateChecksum(java.io.File fileOut, int oleStreamSize) |
void |
close() |
protected abstract void |
createEncryptionInfoEntry(DirectoryNode dir, java.io.File tmpFile) |
protected byte[] |
getChunk() |
protected int |
getChunkMask() |
protected com.zaxxer.sparsebits.SparseBitSet |
getPlainByteFlags() |
protected long |
getPos() |
protected long |
getTotalPos() |
protected abstract javax.crypto.Cipher |
initCipherForBlock(javax.crypto.Cipher existing, int block, boolean lastChunk) |
javax.crypto.Cipher |
initCipherForBlock(int block, boolean lastChunk) |
protected javax.crypto.Cipher |
initCipherForBlockNoFlush(javax.crypto.Cipher existing, int block, boolean lastChunk) |
protected int |
invokeCipher(int posInChunk, boolean doFinal)
Helper function for overriding the cipher invocation, i.e.
(用于覆盖密码调用的辅助函数,即)
|
void |
setNextRecordSize(int recordSize, boolean isPlain)
Some ciphers (actually just XOR) are based on the record size, which needs to be set before encryption
(有些密码(实际上只是异或)是基于记录大小的,需要在加密前设置)
|
void |
write(byte[] b) |
void |
write(byte[] b, int off, int len) |
protected void |
write(byte[] b, int off, int len, boolean writePlain) |
void |
write(int b) |
protected void |
writeChunk(boolean continued) |
void |
writePlain(byte[] b, int off, int len) |
public ChunkedCipherOutputStream(DirectoryNode dir, int chunkSize) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
public ChunkedCipherOutputStream(java.io.OutputStream stream, int chunkSize) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
public final javax.crypto.Cipher initCipherForBlock(int block, boolean lastChunk) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
@Internal protected javax.crypto.Cipher initCipherForBlockNoFlush(javax.crypto.Cipher existing, int block, boolean lastChunk) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
protected abstract javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher existing, int block, boolean lastChunk) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
protected abstract void calculateChecksum(java.io.File fileOut, int oleStreamSize) throws java.security.GeneralSecurityException, java.io.IOException
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
java.io.IOException
(java.io.IOException)
protected abstract void createEncryptionInfoEntry(DirectoryNode dir, java.io.File tmpFile) throws java.io.IOException, java.security.GeneralSecurityException
java.io.IOException
(java.io.IOException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
public void write(int b) throws java.io.IOException
write
in class
java.io.FilterOutputStream
java.io.IOException
(java.io.IOException)
public void write(byte[] b) throws java.io.IOException
write
in class
java.io.FilterOutputStream
java.io.IOException
(java.io.IOException)
public void write(byte[] b, int off, int len) throws java.io.IOException
write
in class
java.io.FilterOutputStream
java.io.IOException
(java.io.IOException)
public void writePlain(byte[] b, int off, int len) throws java.io.IOException
java.io.IOException
(java.io.IOException)
protected void write(byte[] b, int off, int len, boolean writePlain) throws java.io.IOException
java.io.IOException
(java.io.IOException)
protected int getChunkMask()
protected void writeChunk(boolean continued) throws java.io.IOException
java.io.IOException
(java.io.IOException)
protected int invokeCipher(int posInChunk, boolean doFinal) throws java.security.GeneralSecurityException, java.io.IOException
javax.crypto.BadPaddingException
(javax.crypto.BadPaddingException)
javax.crypto.IllegalBlockSizeException
(javax.crypto.IllegalBlockSizeException)
javax.crypto.ShortBufferException
(javax.crypto.ShortBufferException)
java.security.GeneralSecurityException
(java.security.GeneralSecurityException)
java.io.IOException
(java.io.IOException)
public void close() throws java.io.IOException
close
in interface
java.io.Closeable
(在接口 java.io.Closeable 中关闭)
close
in interface
java.lang.AutoCloseable
(在接口 java.lang.AutoCloseable 中关闭)
close
in class
java.io.FilterOutputStream
java.io.IOException
(java.io.IOException)
protected byte[] getChunk()
protected com.zaxxer.sparsebits.SparseBitSet getPlainByteFlags()
protected long getPos()
protected long getTotalPos()
public void setNextRecordSize(int recordSize, boolean isPlain)
recordSize
- the size of the next record
(recordSize - 下一条记录的大小)
isPlain
-
true
if the record is unencrypted
(isPlain - 如果记录未加密,则为 true)
Copyright 2021 The Apache Software Foundation or its licensors, as applicable.