最近在和支付宝支付做个对接,Java项目中用到了RSA2进行加解密,在加密过程中遇到了错误:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
代码执行到这句话时抛出以上异常:Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
问题的原因是:用来加密的RSA私钥的格式是PKCS1格式的(适用于非java),并不是PKCS8格式的(适用于java)。
解决方案:把PKCS1格式转为PKCS8格式,可以用支付宝提供的工具(官网可以下载)转换:
![](https://i-blog.csdnimg.cn/blog_migrate/b38cd1c97d9cb06507f6a5f826d922c8.png)
PKCS1的文件头格式 -----BEGIN RSA PRIVATE KEY-----
PKCS8的文件头格式 -----BEGIN PRIVATE KEY-----