You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从PEM文件生成RSAPublicKey时抛出InvalidKeySpecException求助

解决InvalidKeySpecException: invalid key format问题

我一眼就看出问题所在啦——你正在用RSA密钥工厂去解析一个椭圆曲线(EC)公钥文件,这两种算法完全不兼容,难怪会抛出格式错误的异常!你自己生成的是RSA密钥,所以代码能正常运行,但目标文件是EC类型的密钥,自然就适配失败了。

修复步骤

只需要把代码中密钥工厂的算法改成EC对应的即可,具体改动如下:

// 把RSA改成EC,匹配目标文件的密钥类型
KeyFactory factory = KeyFactory.getInstance("EC"); 
PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(filename))); 
PemObject pemObject = pemReader.readPemObject(); 
byte[] content = pemObject.getContent(); 
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(content); 
// 类型替换为ECPublicKey,匹配EC密钥
ECPublicKey publicKey = (ECPublicKey) factory.generatePublic(pubKeySpec);

额外说明

  • 要是不确定密钥类型,可以直接打开PEM文件查看:EC公钥的头部通常是-----BEGIN EC PUBLIC KEY-----(部分也会用通用的-----BEGIN PUBLIC KEY-----),而RSA公钥会是-----BEGIN RSA PUBLIC KEY-----或通用头部但内容为RSA格式。
  • X509EncodedKeySpec可以兼容多种公钥类型,核心是密钥工厂的算法必须和密钥本身的类型严格匹配。

内容的提问来源于stack exchange,提问作者vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:37:02