使用 BouncyCastle 使用密码加密私钥

2024-01-31

我是 BouncyCastle 的新手。我有一个使用以下代码生成的私钥。

     final CertAndKeyGen keypair = new CertAndKeyGen("RSA", "SHA1WithRSA", null);
     keypair.generate(1024);
     final PrivateKey privKey = keypair.getPrivateKey();

我想使用 AES 或一些 openssl 支持的算法使用 BouncyCastle 使用密码对其进行加密。我正在尝试找到从哪里开始,因为我找不到任何关于此的好的教程。


如果您只想将私钥输出为受密码“12345”保护的 PEM 格式并文件“privatekey.pem”,您可以使用以下 BC 代码:



    JceOpenSSLPKCS8EncryptorBuilder encryptorBuilder = new JceOpenSSLPKCS8EncryptorBuilder(PKCS8Generator.PBE_SHA1_3DES);
    encryptorBuilder.setRandom(EntropySource.getSecureRandom());
    encryptorBuilder.setPasssword("12345".toCharArray());
    OutputEncryptor oe = encryptorBuilder.build();
    JcaPKCS8Generator gen = new JcaPKCS8Generator(privKey,oe);
    PemObject obj = gen.generate();

    PEMWriter pemWrt = new PEMWriter( new FileWriter("privatekey.pem"));
    pemWrt.writeObject(obj);
    pemWrt.close();

  

然后你可以使用 openssl 获取私钥



$ openssl rsa -in privatekey.pem -check
Enter pass phrase for privatekey.pem:
RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
.....
-----END RSA PRIVATE KEY-----
  

PEMWriter 的“标准”使用不会通过密码保护您的私钥:(

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 BouncyCastle 使用密码加密私钥 的相关文章

随机推荐