java - 一起使用 cipherInputStream 和 FileInputStream 进行未加密和加密访问

标签 java

我的文件包含开头包含未加密的 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/

相关文章:

java - java.util.List 实现的测试用例库

java - 通过 shell 脚本运行 java 文件 - java 文件和 shell 脚本位于同一个包中

java - 指南针在搜索查询中返回 0 行且包含 “#”(哈希字符)

java - JetBrains Intellij 缺少 javax.validation

java - Android - 从数组动态更改 ImageView

java - 使用 java 向数据库中输入数据时,可以忽略自动递增 id 吗?

java - 如何检查 XML 节点是否是 Java 中的叶节点?

java - 有界扩展枚举参数的通用方法 - 无法访问 values() 方法

java - 如何使用 selenium webdriver 切换到重定向 url

java - Android Textview 中的固定列