0

我在 java 应用程序中需要用户不应该修改我的应用程序创建的文件,如果它被修改,那么它应该得到验证。

我的方法:我已经在 hashmap 中获取了每个文件的最后修改时间,并在此基础上验证修改后的文件。

问题:对于特定会话很好,如果我想保留该信息,那么我必须创建另一个文件,其中包含用户也可以修改的最后修改信息。现在我没有使用任何数据库。

所以请求你给我一个替代方案,即我如何验证文件?我的方法是最优化的吗?

4

1 回答 1

0

使用合适的散列算法对文件内容进行散列。要测试用户是否修改了文件,请再次执行相同的哈希过程(在测试时)并将其与原始哈希进行比较。如果哈希值不同,则用户明显修改了文件。我建议您将 SHA-1 用于您的散列算法,但其他人可能有更好的散列算法可以使用。

您可以查看此 SO 答案以获取有关如何从字节数组计算 SHA-1 哈希的信息。您可以查看此 SO 答案以获取有关将文件读入字节数组的信息。

对于存储每个文件的哈希信息,我建议使用数据库,但您不必这样做。您可以使用普通文件并在该文件中创建用于存储哈希相关信息的格式。您的格式可能是用户的文件名=哈希。例如:

myfile.txt=489892945720524750
其他userfile.txt=390495940542905490

于 2013-11-01T06:12:59.807 回答