【发布时间】:2018-03-17 16:01:13
【问题描述】:
我有一个使用 GPG 加密的文件,我想从中提取会话密钥,以便单独解密会话密钥。我正在使用 Bouncy Castle 使用以下代码提取会话密钥:
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 命令解密会话密钥:
openssl rsautl -decrypt -in session_key_enc.bin -out session_key_dec.bin -inkey private.pem -raw
我希望原始输出现在是解密后的会话密钥,但我无法使用 --override-session-key 使用它来解密原始文件。
有人知道这个设置可能出了什么问题吗?
【问题讨论】:
标签: cryptography rsa bouncycastle gnupg openpgp