如何将文件标记为已加密

How to mark file as already encrypted

我正在尝试为教育 pourpuses 实现一个简单的加密实用程序,它至少对简单文件有效,但是当我成功加密一个文件时,我不想再次加密它,因为这可能会导致如果我 encrypt/decrypt 以错误的方式丢失我的数据...有没有办法阻止我这样做?

我用的是java,默认的加密库。

提前致谢

由于它是加密的,因此无法在该文件类型的默认程序中打开,因此您可以安全地重命名该文件。这可以通过添加 .enc 作为扩展名来完成。这样做将使您和您的 java 应用程序轻松发现加密文件。

根据您的用例,您还可以让 java 应用程序管理加密文件的数据库。

这里您想知道的答案在很大程度上取决于您最初是如何加密文件的。

我将列出一些可能对您有所帮助的不同方法

方法 1 - 脚本

如果您使用第三方工具,例如由另一个 java 程序员编写的加密实用程序,并且如果您的 运行 此工具在某种 shell 会话中,您的最好的办法可能是将所述工具的调用包装在 shell 脚本中。

如果您在 windows 上的 运行 这可能是一个批处理文件,在 Linux 上是一个 bash 脚本。

本质上,您使用这种方法的方法是提前计算出您需要使用的命令,然后将该命令放入上述 shell 脚本中,同时替换您需要更改的任何参数。

在包装命令之后,您可以提供进一步的命令来重命名文件,或者在文件属性或文件名中嵌入某种信息,一个可能的例子可能是这样的:

IF NOT EXIST %%0.encrypted(
  encrypt %%0 -a -b -c -d
  rename %%0 %%0.encrypted) ELSE (
)
ELSE
()

注意:这些只是理论示例,因为我不知道您的 OS 是什么

如果它保存在名为 'myencrypt.bat' 的文件中,那么您只需键入

myencrypt.bat afile.ext

方法 2 - 自定义字节

如果您可以直接控制源代码以及执行此加密的应用程序,那么为什么不制作一个伪文件格式。

在您的程序随后检查的文件中添加某种标记。

举个例子,你也许可以

将以下字符串添加到文件的前面

ENCFOriginalFile.Ext

将其转换为一组字节,然后加载文件,对其进行加密,添加文本中的字节并将其保存回来,可能使用自定义文件扩展名。

当你再次加密文件时,你需要做的就是读取前4个字节,如果它们等于ENCF,你就知道文件已经加密。

这些只是我能想到的 2 个想法,但现在已经很晚了,我很累。如果我再清醒一点,我可能会想出一整页。