嗨,我想创建检查 md5 的游戏启动器,因此如果用户修改了游戏文件,游戏将无法启动并显示重新安装游戏的消息,并且如果用户将更多文件添加到游戏文件夹游戏启动但它将删除用户添加的文件。代码看起来如何?
谢谢
首先,为了安全措施,只需在系统目录中保留一个隐藏文件。然后在该隐藏文件中保留数据,例如您的文件和子目录名称以及每个文件/子文件夹的 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