- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Bouncy Castle 在平台上生成 key 对包。
SecureRandom random = new SecureRandom();
ECKeyPairGenerator pGen = new ECKeyPairGenerator();
ECKeyGenerationParameters genParam = new ECKeyGenerationParameters(params,random);
pGen.init(genParam);
AsymmetricCipherKeyPair pair = pGen.generateKeyPair();
这里,pair
的类型是AsymmetricCipherKeyPair
。而且,我需要使用这对在服务器上生成 X509V1Certificate。但是,X509Certificate 的 setPublicKey(PublicKey pubkey)
只接受 PublicKey
类型的对象。所以我需要从服务器上的 AsymmetricCipherKeyPair
检索一个 PublicKey
。但是,我得到了 ECPublicKeyParameters
,setPublicKey
方法不接受它。
因此,我的要求是从 AsymmetricCipherKeyPair
中获取一个 PublicKey
。
最佳答案
最简单的方法是使用 BouncyCaSTLe 作为 JavaCryptoProvider:
生成 key 对
KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "BC");
ECGenParameterSpec ecsp = new ECGenParameterSpec(keyAlg);
kpg.initialize(ecsp);
KeyPair kp = kpg.generateKeyPair();
制作 X509v1 证书
X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
X500Principal dnName = new X500Principal("CN=C3");
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 10);
certGen.setSerialNumber(keyId);
certGen.setIssuerDN(dnName);
certGen.setNotBefore(new Date());
certGen.setNotAfter(c.getTime());
certGen.setSubjectDN(dnName);
certGen.setPublicKey(keyPair.getPublic());
certGen.setSignatureAlgorithm("SHA256withECDSA");
certGen.generate(keyPair.getPrivate(), "BC");
关于java - 如何从 AsymmetricCipherKeyPair 获取 PublicKey,而不是 publickeycipher 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664443/
我正在使用 Bouncy Castle 在平台上生成 key 对包。 SecureRandom random = new SecureRandom(); ECKeyPairGenerator pGen
我有一个函数可以成功读取 openssl 格式的私钥: static AsymmetricKeyParameter readPrivateKey(string privateKeyFileName)
我是一名优秀的程序员,十分优秀!