我必须在AES-256中构建一个加密和解密文件的项目。 所以,我必须加密文件,这些文件可以是任何格式,如文本文件,图像文件,视频文件或任何格式的文件, 并且必须加密这些文件并将它们存储在具有不同格式的设备上,例如 * .anuj (扩展名)。
假设我加密了文件并使用自定义扩展程序创建了新文件。 虽然解密文件我怎么知道原始文件是文本文件或图像或任何其他格式。
我的问题是 1.我需要添加额外的字符,同时保存自定义格式的加密文件,如图像( abcd_img.anuj ),文本( abcd_txt.anuj )。 在解密时,我可以从图像的额外嵌入字符img,文本的txt中获取原始文件格式。这样我就可以解密为该文件格式。
但这是一个庞大的过程,因为有多种格式。甚至图像也有多种格式(.gif,.png,.jpg等)。
在开始这个项目之前,我应该选择哪种方法?
答案 0 :(得分:1)
如果您正在处理文件,那么解密后可能需要重新创建该文件的唯一信息是文件名和文件扩展名。
执行此操作的一种方法是,当您加密的文件为“name.ext”时,只需按原样加密文件,而不使用特殊文件格式“name.ext.anuj”。它包含重新创建原始文件的所有内容。
这个问题是显示了文件名。有时像文件名这样的元数据都是攻击者需要的。想想你配偶何时找到一个文件“divorce.odf.anuj”。
在这些情况下,您可以定义新的文件格式。例如,您可以获取文件名,将其写入流(可能以DataOutputStream
提供的文件名长度作为前缀),然后将实际文件内容写为byte[]
。现在,你可以加密整个事情。解密时,只需从前面读取文件名,然后将剩余的解密字节写入该文件。