こんにちは、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を使用