如何用 Java 读取 openssl genrsa -aes256 生成的密钥

2017-04-27 23:11:22 +08:00
 aaronzheng

研究了 2 日这个问题,如何用 Java 读取 openssl genrsa -aes256 生成的密钥,google 了 和读了一些文章,还是得不到答案。求大神指导一下。

目前验证了这几个场景:

  1. 用 openssl 生成的 密钥对 封装的 pkcs8 可以用 Java PEMParser 读到信息。
  2. 用 openssl 生成的 密钥对 然后用来自签名的证书,都可以用 Java PEMParser 读到信息。 (正确点来说,这个密钥对 keyPair,其实只是 RSA_PRIVATEKEY 结构而已)

然而最开始生成的 keyPair (openssl genrsa -aes256) 居然不能用 Java PEMParser 读到,百思不得其解。明明 passphrase 输入对的,但还是显示不对。目前按照我理解,就是 openssl 生成密钥对的时候,除了会用 所输入的 passphrase 还会对起进行转化,但是我也没有在命令行添加 salt 和 iv 和 k 这些参数,不知道为什么还是会被转化了。百思不得其解,求大神指点一下。


进行 decrypt

PEMDecryptorProvider pemDecryptorProvider = new JcePEMDecryptorProviderBuilder().setProvider(Constant.BOUNCY_CASTLE_PROVIDER).build("passphrase".toCharArray());

PEMKeyPair pemKeyPair = pmeEncryptedKeyPair.decryptKeyPair(pemDecryptorProvider);

PrivateKeyInfo privateKeyInfo = pemKeyPair.getPrivateKeyInfo();


错误信息:
org.bouncycastle.openssl.EncryptionException: exception using cipher - please check password and data.
2489 次点击
所在节点    问与答
1 条回复
aaronzheng
2017-04-28 15:26:28 +08:00
已经自我解决了,用 des3 生成的都可以解密,用 aes 的不行,已经转用 des3 解决问题了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX