我的目标是生成Armoer椭圆曲线(ECC)公钥和私钥。因此,我实现了AsymmetricCipherKeyPair,现在我必须将其转换为OpenPGP Key,然后将其传递给KeyRingGenrator。
X9ECParameters parms = ECNamedCurveTable.getByOID(new ASN1ObjectIdentifier("curve25519"));
ECParameterSpec domainparams = EC5Util.convertToSpec(parms);
ECDomainParameters domainParams = EC5Util.getDomainParameters(null,domainparams);
SecureRandom secureRandom = new SecureRandom();
ECKeyGenerationParameters keyParams = new ECKeyGenerationParameters(domainParams, secureRandom);
ECKeyPairGenerator generator = new ECKeyPairGenerator();
generator.init(keyParams);
AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();
生成keyPair后,我必须将其转换为OpenPGP密钥对,以便可以在以下函数中传递它。
PGPKeyPair eccKeyPair = new PGPKeyPair("openPGPPublicKey", "openPGPPrivateKey");
此功能还用于生成钥匙圈。
PGPKeyRingGenerator keyRingGen = new PGPKeyRingGenerator (PGPSignature.DEFAULT_CERTIFICATION,
eccKeyPair ,
"[email protected]", null, null,
null, new BcPGPContentSignerBuilder(PGPPublicKey.EC,
HashAlgorithmTags.SHA256),
new BcPBESecretKeyEncryptorBuilder(PGPEncryptedData.AES_256).build(passPhrase));
最佳答案
查看API文档时,我发现:
不推荐使用。根据需要使用BcPGPKeyPair
或JcaPGPKeyPair
。
那BcPGPKeyPair
呢?
毕竟,您是使用Bouncy Castle的轻量级API生成密钥对的。
关于java - 如何从AsymmetricCipherKeyPair创建PGP公钥和私钥?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56852033/