Bạn có thể viết một trình bao bọc đơn giản xung quanh GNU PGP về cơ bản thực hiện lệnh GPG từ Java.
Ưu điểm của việc sử dụng GNU PGP là bạn sẽ không bị ràng buộc vào một thư viện cụ thể. Số lượng tài liệu và hỗ trợ có sẵn trực tuyến cho thư viện của bên thứ ba không phong phú như các lược đồ mã hóa khác vì hầu hết đều gọi PGP từ dòng lệnh. Khóa PGP cũng sẽ vẫn ở một nơi phổ biến, tức là vòng khóa dành riêng cho người dùng thay vì được xuất trong nhiều tệp.
Lệnh GPG cho giải mã là
echo "password" | gpg --passphrase-fd 0 --output plaintext.txt --decrypt encrypted.gpg
Bằng cách xác định cụm từ mật khẩu-fd là 0, bạn có thể cung cấp mật khẩu thông qua các dòng đầu vào tiêu chuẩn.
Sau đây là cách mã Java trông giống như -
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()
}
Giống như hầu hết các câu trả lời khác ở đây, liên quan đến blog của entry sử dụng [Bouncy Castle Java gói] (https://www.bouncycastle.org /java.html). Bản thân cơ sở mã Bouncy Castle bao gồm rất nhiều [ví dụ về PGP] (https://github.com/bcgit/bc-java/tree/master/pg/src/main/java/org/bouncycastle/openpgp/examples). Nếu bạn muốn xem các ví dụ này tách ra thành một dự án độc lập với phụ thuộc Bouncy Caste được Maven kéo vào, hãy xem [openpgp-bc-examples] (https://github.com/george-hawkins/openpgp-bc-examples) . –