首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用passphrase java解密私钥(字符串)

如何用passphrase java解密私钥(字符串)
EN

Stack Overflow用户
提问于 2019-08-07 23:18:23
回答 1查看 4.2K关注 0票数 0

我正试图用字符串解密私钥。钥匙也有密码。我的私钥文件有以下页眉和页脚:

代码语言:javascript
复制
-----BEGIN ENCRYPTED PRIVATE KEY-----\n
-----END ENCRYPTED PRIVATE KEY-----\n

我可以在私钥中看到更多的'\n'新行。我希望是pem格式的。

下面代码的最后一行给出了这个错误:

PBE参数解析错误:期待AES密码的对象标识符

这是我尝试过的代码:

代码语言:javascript
复制
String privateKeyPEM = a;
privateKeyPEM = privateKeyPEM.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----\n", "");
privateKeyPEM = privateKeyPEM.replace("-----END ENCRYPTED PRIVATE KEY-----\n", "");
byte[] encoded = Base64.getMimeDecoder().decode(privateKeyPEM);
EncryptedPrivateKeyInfo pkinfo = new EncryptedPrivateKeyInfo(encoded);

我也尝试过使用bouncy ,但是我得到了以下错误

类“org.bouncycastle.asn1.pkcs.RSAPublicKey”的签名者信息与同一包中其他类的签名者信息不匹配。

注意:我使用的是jdk11

我很感谢你的帮助。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-02-01 19:28:01

你需要确保你的私钥是用AES密码加密的。

在加密的私钥文件开始时,您可以看到如下所示:

代码语言:javascript
复制
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,2241040B6A6E0FBE

DEK-Info将告诉您正在使用的加密算法。

您可以使用openssl来转换密码:

代码语言:javascript
复制
openssl rsa -in des.pem -aes256 -out aes.pem

要获得AES加密的私钥:

代码语言:javascript
复制
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,40FACC69B7E9ED576BF8300B871701EB

到目前为止,javax.crypto仍然只支持每个JDK-8076999的AES密码。这就是为什么你会得到这个错误:

代码语言:javascript
复制
PBE parameter parsing error: expecting the object identifier for AES cipher
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57403322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档