java - 为什么证书中的公钥为空
问题描述
我使用以下代码在 android 设备上生成证书:
//keypair
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(2048,new SecureRandom());
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//certificate
Calendar calendar = Calendar.getInstance();
calendar.set(2009, 0, 1);
Date notBefore = new Date(calendar.getTimeInMillis());
calendar.set(2029, 0, 1);
Date notAfter = new Date(calendar.getTimeInMillis());
BigInteger serialNumber =
BigInteger.valueOf(Math.abs(System.currentTimeMillis()));
X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
X500Principal dnName = new
X500Principal("C=XX,ST=XX,L=XX,O=XX,OU=XX,CN=XXXXX");
certGen.setSerialNumber(serialNumber);
certGen.setIssuerDN(dnName);
certGen.setNotBefore(notBefore);
certGen.setNotAfter(notAfter);
certGen.setSubjectDN(dnName);
certGen.setPublicKey(keyPair.getPublic()); //set public key here
certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");
PrivateKey signingKey = keyPair.getPrivate();
X509Certificate cert = certGen.generate(signingKey,"BC");
//why certification's public keWy is null?
android.util.Log.e("mylog","cert.getPublicKey():"+cert.getPublicKey());
日志表明cert.getPublicKey()
返回null。怎么了?
解决方案
推荐阅读
- android - 如何使用授权标头从 url 获取位图?
- sql - 提高 SQL 查询的性能
- qt - 在运行时添加带有图像的 QLabel 时忽略图像缩放
- java - 为什么 HttpServletRequest 中的 RequestBody 是 InputStream?
- corda - corda 手动生成节点信息 (--just-generate-node-info) 强制主机查找
- django-rest-framework - Django REST Framework - 使用自定义 PUT 方法扩展 ListAPIView
- android - Android硬件后退按钮在反应导航时退出应用程序
- java - 找出向量列表中有多少唯一值 - Java
- java - primefaces 对话框关闭使输入在主页上被禁用
- javascript - javascript未定义错误-从表单中获取值