java中用asc私钥解密二进制文件

java中用asc私钥解密二进制文件,java,encryption,binary,rsa,private-key,Java,Encryption,Binary,Rsa,Private Key,亲爱的 我有一个.DAT格式的二进制文件,还有一个.asc格式的私钥,格式如下 -----BEGIN PGP PRIVATE KEY BLOCK----- Version: GnuPG v1 //key goes here -----END PGP PRIVATE KEY BLOCK----- 尝试使用java安全性和Bouncy Castle库,但毫无希望 如果我使用以下代码创建私钥对象 byte[] encoded = Base64.decodeBase64(privateKeyPEM

亲爱的

我有一个.DAT格式的二进制文件,还有一个.asc格式的私钥,格式如下

-----BEGIN PGP PRIVATE KEY BLOCK----- 
Version: GnuPG v1

//key goes here
-----END PGP PRIVATE KEY BLOCK-----
尝试使用java安全性和Bouncy Castle库,但毫无希望

如果我使用以下代码创建私钥对象

byte[] encoded = Base64.decodeBase64(privateKeyPEM);
KeyFactory kf = KeyFactory.getInstance("RSA");
RSAPrivateKey privKey = (RSAPrivateKey) kf.generatePrivate(new PKCS8EncodedKeySpec(encoded));
我得到了InvalidKeyFormat异常。
如果我没有使用PKCS8EncodedKeySpec,我得到了一个解密文件,没有可读性。

PGP私钥不是PKCS8格式,而是PGP格式。您可能应该使用PGP/GPG库,如Bouncycastle OpenPGP库。