我的文件包含开头包含未加密的 header 数据,然后其余部分包含加密的 header 数据。 我希望能够使用 BufferedInputStream/FileInputSteam 读取 header 数据。 接下来,我想开始使用 CipherInputStream 读取其余的加密数据,该 CipherInputStream 使用相同的 BuffereredInputStream 作为输入
这样可以吗???可以改变您使用流的方式吗?
最佳答案
是的,你可以做到这一点。
唯一棘手的部分取决于 header 的结构。如果您必须读取 header 末尾才能确定其结束位置,则需要能够在流中备份一点,以便 CipherInputStream 可以读取所有 header 加密的数据。另一方面,如果您的 header 具有固定长度,或者是长度编码的,或者具有某种结束标记,那么它应该非常简单:
try (InputStream is = new BufferedInputStream(Files.newInputStream(...))) {
Header header = Header.read(is);
CipherInputStream cis = new CipherInputstream(is, header.getCipherInstance());
cis.read(...);
}
关于java - 一起使用 cipherInputStream 和 FileInputStream 进行未加密和加密访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30989150/