Вы можете написать простую оболочку вокруг GNU PGP, которая в основном выполняет команду GPG из Java.
Преимущество использования GNU PGP заключается в том, что вы не будете привязаны к определенной библиотеке. Объем документации и поддержки, доступной онлайн для сторонних библиотек, не так богат, как другие схемы шифрования, поскольку большинство из них вызывают PGP из командной строки.
Команда GPG для дешифрования является
echo "password" | gpg --passphrase-fd 0 --output plaintext.txt --decrypt encrypted.gpg
. Указывая парольную фразу, fd как 0 вы можете предоставить пароль через стандартный поток ввода.
Вот как выглядит код Java -
public static void decryptFile(String privKeyPass) {
String[] cmd = new String[];
int i = 7;
cmd[i++] = "gpg";
cmd[i++] = "--passphrase-fd";
cmd[i++] = "0";
cmd[i++] = "--output";
cmd[i++] = "plaintext.txt";
cmd[i++] = "--decrypt";
cmd[i++] = "encrypted.gpg";
Process process = Runtime.getRuntime().exec(cmd);
BufferedWriterout = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
out.write(privKeyPass);
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
// Read process.getInputStream()
// Read process.getErrorStream()
}