我有一個使用GPG加密的文件,我想從中提取會話密鑰,以便我可以分別解密會話密鑰。我使用的充氣城堡使用下面的代碼提取會話密鑰:解密OpenPGP會話密鑰
openssl rsautl -decrypt -in session_key_enc.bin -out session_key_dec.bin -inkey private.pem -raw
我期望的原始輸出到現在:
private static void outputSessionKey(String path) throws FileNotFoundException, IOException {
BCPGInputStream input = new BCPGInputStream(PGPUtil.getDecoderStream(new FileInputStream(path)));
Packet packet;
while((packet = input.readPacket()) != null) {
if (packet instanceof PublicKeyEncSessionPacket) {
PublicKeyEncSessionPacket encPacket = (PublicKeyEncSessionPacket) packet;
byte[] encKey = encPacket.getEncSessionKey()[0];
FileOutputStream output = new FileOutputStream("session_key_enc.bin");
output.write(encKey);
output.close();
}
}
input.close();
}
我然後使用以下命令的OpenSSL解密會話密鑰是解密的會話密鑰,但我無法使用它來使用--override-session-key解密原始文件。
有沒有人有這個設置會出現什麼問題的想法?
嘿Dave,謝謝你的回答。爲了解決您的觀點:0我不假定GPG使用RSA,因爲這是我設置的默認值。 1.在我的文章中我沒有提到這一點,但是我取走了前兩個字節以隔離加密密鑰的字節。我會嘗試你的建議,看看它是否有效。我能夠從原始字節中提取解密的密鑰,但似乎有小的差異 –