【问题标题】:Persistent file validation in javajava中的持久文件验证
【发布时间】:2013-11-01 05:07:27
【问题描述】:

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

我的做法:我在hashmap中取了每个文件的最后修改时间,并以此为基础验证修改后的文件。

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

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

【问题讨论】:

  • java 安全中没有任何类可以帮助解决这个问题。

标签: java validation eclipse-plugin


【解决方案1】:

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

您可以查看this SO answer,了解有关如何从字节数组计算 SHA-1 哈希的信息。您可以查看this SO answer 了解有关将文件读入字节数组的信息。

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

myfile.txt=489892945720524750
otheruserfile.txt=390495940542905490

【讨论】:

  • 我又要写一个用户也可以修改的文件
  • @RTA 用户应该能够编辑文件吗?或者用户是否拥有与您在机器上相同的权限,因此可以查看所有文件?您始终可以创建受密码保护的文件或其他东西。再次安装一个包含密码保护的数据库会更好......
  • 应用程序将安装在用户的系统上,然后他可以修改我用来为我的应用程序创建的一些文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多