gpt4 book ai didi

java - RSA 加密 :InvalidKeyException: invalid key format

转载 作者:行者123 更新时间:2023-11-30 07:36:35 28 4
gpt4 key购买 nike

我必须读取 pem key 文件以获得 RSA 公钥,然后使用它们进行加密。我可以使用 openssl 并将 pem 文件转换为 der 文件来执行此操作。然后使用 X509EncodedKeySpec 和 PKCS8EncodedKeySpec 加载我的 key 。但我不想这样做,因为 pem 是用户 key 交换格式。用户可以像这样注册自己的 key :

--BEGIN PUBLIC KEY-- MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGi0/vKrSIIQMOm4atiw+2s8tSojOKHsWJU3oPTm

b1a5UQIH7CM3NgtLvUF5DqhsP2jTqgYSsZSl+W2RtqCFTavZTWvmc0UsuK8tTzvnCXETsnpjeL13

Hul9JIpxZVej7b6KxgyxFAhuz2AGscvCXnepElkVh7oGOqkUKL7gZSD7AgMBAAE=

--END PUBLIC KEY--

并且此 key 以这种格式存储在数据库中...

这是我试过的代码..

File pubKeyFile=new File("D:/public_key.pem");
DataInputStream dis = new DataInputStream(new FileInputStream(pubKeyFile));
byte[] pubKeyBytes = new byte[(int)pubKeyFile.length()];
dis.readFully(pubKeyBytes);
dis.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKeyBytes);
RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubSpec);

我遇到了异常

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format

由于我对加密概念完全陌生,谁能帮我解决这个异常?

非常感谢。

最佳答案

bouncycastle ,它会这样做:

CertificateFactory cf = CertificateFactory.getInstance("X509", "BC");
InputStream is = new FileInputStream("D:/public_key.pem");
X509Certificate certificate = (X509Certificate) cf.generateCertificate(is);
is.close();
RSAPublicKey pubKey = (RSAPublicKey)certificate.getPublicKey();

关于java - RSA 加密 :InvalidKeyException: invalid key format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com