-1

こんにちは、md5 をチェックするゲーム ランチャーを作成したいので、ユーザーがゲーム ファイルを変更した場合、ゲームが起動せず、ゲームを再インストールするメッセージが表示されます。また、ユーザーがゲーム フォルダーにさらにファイルを追加すると、ゲームが開始されますが、ユーザーが追加したファイルは削除されます。コードはどのように見えますか?

ありがとうございました

4

1 に答える 1

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を使用

于 2014-04-20T08:03:03.223 に答える