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
。
我试过通过加密单个文件来做到这一点,但我有很多数据 (~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
。