4

私はBouncyCastleを初めて使用します。以下のコードを使用して生成された秘密鍵があります。

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

AESまたはBouncyCastleを使用したopensslでサポートされているアルゴリズムを使用してパスワードで暗号化します。これに関する適切なチュートリアルが見つからないため、どこから始めればよいかを探しています。

4

2 に答える 2

6

秘密鍵をパスフレーズ「12345」で保護された PEM 形式のファイル「privatekey.pem」に出力するだけの場合は、次の BC コードを使用できます。

    JceOpenSSLPKCS8EncryptorBuilder encryptorBuilder = new JceOpenSSLPKCS8EncryptorBuilder(PKCS8Generator.PBE_SHA1_3DES);
    encryptorBuilder.setRandom(EntropySource.getSecureRandom());
    encryptorBuilder.setPassword("12345".toCharArray());
    OutputEncryptor oe = encryptorBuilder.build();
    JcaPKCS8Generator gen = 新しい 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
privatekey.pem のパスフレーズを入力してください:
RSA キーは問題ありません
RSA キーの書き込み
-----RSA 秘密鍵の開始-----
.....
-----END RSA 秘密鍵-----

PEMWriter の「標準的な」使用では、秘密鍵をパスフレーズで保護しません:(

于 2013-09-24T19:49:51.833 に答える