Puede escribir un envoltorio simple alrededor de GNU PGP que básicamente ejecuta el comando GPG de Java.
La ventaja de utilizar GNU PGP es que no se lo vinculará a una biblioteca específica. La cantidad de documentación y soporte disponible en línea para bibliotecas de terceros no es tan abundante como otros esquemas de cifrado, ya que la mayoría de ellos invocan a PGP desde la línea de comandos. Las claves PGP también se mantendrán en un lugar común, es decir, el llavero específico del usuario en lugar de exportarse en múltiples archivos.
El comando GPG para el descifrado es
echo "password" | gpg --passphrase-fd 0 --output plaintext.txt --decrypt encrypted.gpg
Al especificar la frase de contraseña-fd como 0 puede proporcionar la contraseña a través del flujo de entrada estándar.
Aquí es cómo se ve el código Java como -
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()
}
Como la mayoría de las otras respuestas aquí, ligado a la entrada de blog utiliza los paquetes [Castillo hinchable Java] (https://www.bouncycastle.org /java.html). La base de código de Bouncy Castle en sí incluye una gran cantidad de [ejemplos de PGP] (https://github.com/bcgit/bc-java/tree/master/pg/src/main/java/org/bouncycastle/openpgp/examples). Si desea ver estos ejemplos separados en un proyecto independiente con las dependencias de Bouncy Caste activadas por Maven, consulte [openpgp-bc-examples] (https://github.com/george-hawkins/openpgp-bc-examples) . –