如何使用md5(java)检查修改过的文件

如何使用md5(java)检查修改过的文件,java,md5,md5-file,Java,Md5,Md5 File,嗨,我想创建游戏启动器,检查md5,这样如果用户修改了游戏文件,游戏将不会启动并显示消息重新安装游戏,如果用户向游戏文件夹添加更多文件,游戏开始,但它将删除用户添加的文件。代码是什么样子的 谢谢首先,请在系统目录中保留一个隐藏文件,以便采取安全措施。然后在该隐藏文件中保留数据,例如文件和子目录名以及每个文件/子文件夹的md5哈希,最后在所有组合哈希计算的md5哈希的末尾 接下来在启动游戏时,只需计算游戏根目录中的所有目录和文件 public void listf(字符串directoryName

嗨,我想创建游戏启动器,检查md5,这样如果用户修改了游戏文件,游戏将不会启动并显示消息重新安装游戏,如果用户向游戏文件夹添加更多文件,游戏开始,但它将删除用户添加的文件。代码是什么样子的


谢谢

首先,请在系统目录中保留一个隐藏文件,以便采取安全措施。然后在该隐藏文件中保留数据,例如文件和子目录名以及每个文件/子文件夹的md5哈希,最后在所有组合哈希计算的md5哈希的末尾

接下来在启动游戏时,只需计算游戏根目录中的所有目录和文件

public void listf(字符串directoryName,ArrayList文件){
文件目录=新文件(目录名);

}

现在创建一个包含所有值的临时文件,然后创建每个文件内容的md5哈希,并从文件内容的md5哈希更新临时文件

MessageDigest md=MessageDigest.getInstance(“MD5”)
try(InputStream=Files.newInputStream(path.get(“file.txt”)){
DigestInputStream dis=新的DigestInputStream(is,md);
}
byte[]digest=md.digest()

交叉检查temp文件和系统的原始md5散列,最后再次检查散列文件的散列。(用于检查用户是否未更改系统文件)


因为您可能有一个很长的文件列表,所以计算所有文件内容的md5可能会很慢。对于优化,使用Java NIO

您将从这里得到基本想法:剩下的部分您必须自己解决。在你尝试了一些你自己无法解决的问题之后再来。
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList) {
    if (file.isFile()) {
        files.add(file);
    } else if (file.isDirectory()) {
        listf(file.getAbsolutePath(), files);
    }
}