Java 8 ro Java 10 如何用密码保护文件而不考虑其扩展名

How can I password protect a file regardless of its extension in Java 8 ro Java 10

我试过通过加密单个文件来做到这一点,但我有很多数据 (~20GB),因此这会花费很多时间。在我的测试中,加密一个大小为 80MB 的文件需要 2.28 分钟。 有没有一种更快的方法可以对任何文件进行密码保护 (text/binary/multimedia)?

如果您只是想对其他人隐藏文件,您可以尝试加密文件路径而不是加密整个大文件.

对于你提到的路径:text/binary/multimedia,你可以尝试用如下方式加密:

private static String getEncryptedPath(String filePath) {
    String[] tokens = filePath.split("/");
    List<String> tList = new ArrayList<>();
    for (int i = 0; i < tokens.length; i++) {
        tList.add(Hashing.md5().newHasher() // com.google.common.hash.Hashing;
                .putString(tokens[i] + filePath, StandardCharsets.UTF_8).hash().toString()
                .substring(2 * i, 2 * i + 5)); // to make it impossible to encrypt, add your custom secret here;
    }
    return String.join("/", tList);
}

然后变成加密路径为:

72b12/9cbb3/4a5f3

一旦你知道了真实路径text/binary/multimedia,任何时候你想访问文件,你都可以使用这个方法来获取真实文件路径 72b12/9cbb3/4a5f3