java中的持久文件验证
在java应用程序中,我需要用户不要修改我的应用程序创建的文件,如果它被修改,那么它应该得到验证
我的方法:我在一个hashmap中获取每个文件的最后修改时间,并在此基础上验证修改后的文件
问题:对于特定的会话来说,这很好,如果我想保留这些信息,那么我必须创建另一个文件,其中包含上次修改的信息,用户也可以修改这些信息。目前我没有使用任何数据库
因此,请您给我一个替代方案,即如何验证文件?我的方法是最优化的吗
你可以在下面搜索框中键入要查询的问题!
在java应用程序中,我需要用户不要修改我的应用程序创建的文件,如果它被修改,那么它应该得到验证
我的方法:我在一个hashmap中获取每个文件的最后修改时间,并在此基础上验证修改后的文件
问题:对于特定的会话来说,这很好,如果我想保留这些信息,那么我必须创建另一个文件,其中包含上次修改的信息,用户也可以修改这些信息。目前我没有使用任何数据库
因此,请您给我一个替代方案,即如何验证文件?我的方法是最优化的吗
# 1 楼答案
使用合适的散列算法对文件内容进行散列。要测试用户是否修改了文件,请再次执行相同的哈希过程(在测试时),并将其与原始哈希进行比较。如果哈希值不同,那么用户显然修改了文件。我建议您使用SHA-1作为哈希算法,但其他人可能会使用更好的哈希算法
有关如何从字节数组计算SHA-1哈希的信息,请参见this SO answer。有关将文件读入字节数组的信息,请参见this SO answer
为了存储每个文件的哈希信息,我建议使用数据库,但不必这样做。您可以使用普通文件,并在该文件中创建用于存储哈希相关信息的格式。您的格式可以是用户的文件名=散列。例如: