java生成公钥和私钥_使用Java生成证书,公钥和私钥

小编典典

您可以使用一对或密钥在Java中动态生成证书。(公钥,私钥)。以BigInteger格式获取这些密钥,并检查以下代码以生成证书。

RSAPrivateKeySpec serPrivateSpec = new RSAPrivateKeySpec(

new BigInteger(val of pub key), new BigInteger(val of pri key));

fact = KeyFactory.getInstance("RSA");

PrivateKey serverPrivateKey = fact.generatePrivate(serPrivateSpec);

RSAPublicKeySpec serPublicSpec = new RSAPublicKeySpec(

new BigInteger(agentCL.getSerPubMod()), new BigInteger(agentCL.getSerPubExp()));

PublicKey serverPublicKey = fact.generatePublic(serPublicSpec);

keyStore = KeyStore.getInstance(IMXAgentCL.STORE_TYPE);

keyStore.load(null, SOMEPWD.toCharArray());

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

X509Certificate[] serverChain = new X509Certificate[1];

X509V3CertificateGenerator serverCertGen = new X509V3CertificateGenerator();

X500Principal serverSubjectName = new X500Principal("CN=OrganizationName");

serverCertGen.setSerialNumber(new BigInteger("123456789"));

// X509Certificate caCert=null;

serverCertGen.setIssuerDN(somename);

serverCertGen.setNotBefore(new Date());

serverCertGen.setNotAfter(new Date());

serverCertGen.setSubjectDN(somename);

serverCertGen.setPublicKey(serverPublicKey);

serverCertGen.setSignatureAlgorithm("MD5WithRSA");

// certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false,new

// AuthorityKeyIdentifierStructure(caCert));

serverCertGen.addExtension(X509Extensions.SubjectKeyIdentifier, false,

new SubjectKeyIdentifierStructure(serverPublicKey));

serverChain[0] = serverCertGen.generateX509Certificate(serverPrivateKey, "BC"); // note: private key of CA

keyStore.setEntry("xyz",

new KeyStore.PrivateKeyEntry(serverPrivateKey, serverChain),

new KeyStore.PasswordProtection("".toCharArray()));

希望这会帮助你。

2020-11-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值