gpt4 book ai didi

Android 从 CipherInputStream 读取文件而不重写文件

转载 作者:行者123 更新时间:2023-11-30 00:23:47 25 4
gpt4 key购买 nike

有没有人知道如何在不将解密文件重写为原始文件的情况下读取解密文件?

下载文件后,文件自动加密。当我想打开文件时,文件会先被解密,但问题是如何从 CipherInputStream 读取文件,这样就不需要将文件转换回原始文件。

void decrypt(File file1, String nama) throws IOException, NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {

md5 hash = new md5();
String sapi = hash.md5(nama);

FileInputStream fis = new FileInputStream(file1+ "/" + sapi);

FileOutputStream fos = new FileOutputStream(file1 + "/decrypted.json");

SecretKeySpec sks = new SecretKeySpec("MyDifficultPassw".getBytes(),
"AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);
int b;
byte[] d = new byte[8];
while ((b = cis.read(d)) != -1) {
fos.write(d, 0, b);
}

fos.flush();
fos.close();
cis.close();

}

我可以打开解密文件,但如果我使用上面的代码,它会在加密文件和原始文件之间复制。

最佳答案

FileOutputStream fos = new FileOutputStream(file1 + "/decrypted.json"); 

写入作为解密方法的第一个参数传入的 File 对象

decrypt(File file1 ...

这也是您正在读取的文件对象。因此,当您执行 fos.write(d, 0, b); 时,您正在写回与您正在读取的对象相同的 File 对象。

所以要么写入不同的文件,要么根本不写任何东西。新的 FileOutputStream 方法可以采用文件名而不是 File 对象,如 here 所述相关摘录状态

FileOutputStream (String name, boolean append)

Creates a file output stream to write to the file with the specified name. If the second argument is true, then bytes will be written to the end of the file rather than the beginning. A new FileDescriptor object is created to represent this file connection.

First, if there is a security manager, its checkWrite method is called with name as its argument.

If the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason then a FileNotFoundException is thrown.

所以也许你想要 FileOutputStream fos = new FileOutputStream("/decrypted.json", true|false)

根据您是要追加还是覆盖文件,将第二个参数设置为 true 或 false?

要为您的问题提供准确的解决方案有点困难,因为您没有明确说明您想要的结果是什么,所以我做了一些可能是错误的假设,但无论哪种方式,以上内容都可以帮助您找到所需的解决方案

关于Android 从 CipherInputStream 读取文件而不重写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45788258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com