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

时间:2014-04-20 05:48:46

标签: java md5 md5-file

您好我想创建检查md5的游戏启动器,因此如果用户修改游戏文件游戏将无法启动并显示消息以重新安装游戏,并且如果用户将更多文件添加到游戏文件夹游戏开始但是它将删除一个文件用户添加。代码如何?

谢谢

1 个答案:

答案 0 :(得分:0)

首先,只需在系统目录中保留一个隐藏文件即可获得安全措施。然后在该隐藏文件中保存诸如文件和子目录名称之类的数据以及每个文件/子文件夹的md5哈希值,最后保留所有组合哈希计算结束的md5哈希值。

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

public void listf(String directoryName, ArrayList<File> files) { File directory = new File(directoryName);

// 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);
    }
}

}

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

MessageDigest md = MessageDigest.getInstance("MD5"); try (InputStream is = Files.newInputStream(Paths.get("file.txt"))) { DigestInputStream dis = new DigestInputStream(is, md); } byte[] digest = md.digest();

交叉检查临时文件和系统的原始md5哈希,最后再检查哈希文件的哈希值。 (用于检查用户是否未更改系统文件)

由于您可能有一长串文件,因此计算所有文件内容的md5可能会很慢。要进行优化,请使用Java NIO