我如何用密码保护文件而不管它在Java 8 ro Java 10中的扩展名如何

时间:2018-08-20 04:03:02

标签: file encryption java-8 password-protection java-10

我尝试通过加密单个文件来执行此操作,但是我有很多数据(〜20GB),因此将花费大量时间。在我的测试中,加密单个大小为80MB的文件花了2.28分钟。 有没有一种更快的方式可以对任何文件(文本/二进制/多媒体)进行密码保护?

1 个答案:

答案 0 :(得分:1)

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

对于您提到的路径: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