V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aaronzheng
V2EX  ›  问与答

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

  •  
  •   aaronzheng · 2017-04-27 23:11:22 +08:00 · 2468 次点击
    这是一个创建于 2555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    研究了 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.
    
    1 条回复    2017-04-28 15:26:28 +08:00
    aaronzheng
        1
    aaronzheng  
    OP
       2017-04-28 15:26:28 +08:00 via iPhone
    已经自我解决了,用 des3 生成的都可以解密,用 aes 的不行,已经转用 des3 解决问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   997 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:08 · PVG 04:08 · LAX 13:08 · JFK 16:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.