最近再使用java代码生成证书和私钥,留个学习备份在这里
使用的jar包是:bcprov-jdk15on-1.54.jar
base64使用apache的codec里面的,日期使用的joda-time
第一个是以前的bouncy castle版本生成证书的代码,现在可以用,但是已经不推荐了,有些API会显示已经过期了。
public class Test1 { static { Security.addProvider(new BouncyCastleProvider()); } public static void main(String[] args) throws Exception { // Hashtable attrs = new Hashtable(); // Vector order = new Vector(); // // attrs.put(X509Principal.C, "AU"); // attrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); // attrs.put(X509Principal.OU, "Bouncy Intermediate Certificate"); // attrs.put(X509Principal.EmailAddress, // "feedback-crypto@bouncycastle.org"); // // order.addElement(X509Principal.C); // order.addElement(X509Principal.O); // order.addElement(X509Principal.OU); // order.addElement(X509Principal.EmailAddress); // new X509Principal(order, attrs) KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); keyPairGen.initialize(1024); KeyPair keyPair = keyPairGen.generateKeyPair(); PublicKey pubKey = keyPair.getPublic(); PrivateKey privKey = keyPair.getPrivate(); X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); certGen.setSerialNumber(BigInteger.valueOf(1)); certGen.setIssuerDN(new X509Principal( "C=CN,ST=JS,L=SZ,CN=DL,EMAILADDRESS=feedback-crypto@bouncycastle.org,O=OR,OU=OU")); certGen.setSubjectDN(new X509Principal( "C=CN,ST=JS,L=SZ,CN=DL,EMAILADDRESS=feedback-crypto@bouncycastle.org,O=OR,OU=OU")); certGen.setNotBefore(LocalDate.now().toDate()); certGen.setNotAfter(LocalDate.now().plusYears(100).toDate()); certGen.setPublicKey(pubKey); // certGen.setSignatureAlgorithm("MD5withRSA"); certGen.setSignatureAlgorithm("SHA1withRSA"); Certificate cert = certGen.generateX509Certificate(privKey); System.out.println(cert); } }
在新的bouncy castle版本里,推荐使用的是另一个生成方法
X509v3CertificateBuilder是推荐使用的,需要导入另一个jar包bcpkix-jdk15on-1.54.jar
public class Test2 { static { Security.addProvider(new BouncyCastleProvider()); } public static void main(String[] args) throws Exception { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC"); keyPairGen.initialize(1024); KeyPair keyPair = keyPairGen.generateKeyPair(); PublicKey pubKey = keyPair.getPublic(); PrivateKey privKey = keyPair.getPrivate(); String mySigAlgo = "Sha1withRSA"; SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfo .getInstance(pubKey.getEncoded()); // X500NameBuilder nameBuilder = new X500NameBuilder(); // nameBuilder.addRDN(BCStyle.C, "CN"); // nameBuilder.addRDN(BCStyle.ST, "JS"); // nameBuilder.addRDN(BCStyle.L, "SZ"); // nameBuilder.addRDN(BCStyle.CN, "DL"); // nameBuilder.addRDN(BCStyle.E, "feedback-crypto@bouncycastle.org"); // nameBuilder.addRDN(BCStyle.O, "O"); // nameBuilder.addRDN(BCStyle.OU, "OU"); // // X500Name x500Name = nameBuilder.build(); X500Name x500Name = new X500Name("C=CN,ST=JS,L=SZ,CN=DL,EMAILADDRESS=feedback-crypto@bouncycastle.org,O=OR,OU=OU"); LocalDate now = LocalDate.now(); X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder( x500Name, new BigInteger(64, new SecureRandom()), new Date( now.toEpochDay()), new Date(now.plusYears(100) .toEpochDay()), x500Name, publicKeyInfo); ContentSigner signer = new JcaContentSignerBuilder(mySigAlgo) .build(privKey); X509CertificateHolder certHolder = certBuilder.build(signer); X509Certificate cert = (new JcaX509CertificateConverter()) .getCertificate(certHolder); System.out.println(cert); } }
相关推荐
k8s1.16的jenkins部署java项目cicd(cd手动)-kubernetes安装包和详细文档笔记整理
SQLyong 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
SQLyog-12.5.0-0.x64Community
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
SQLyong.exe 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。
python课程设计大作业问答系统源码.zip python课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问答系统源码.zippython课程设计大作业问
强化学习_基于Pytorch的深度强化学习的模块化实现_附项目源码_优质项目实战
源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip 源代码-Gallery4U ASP图片管理系统 v1.25.zip
能源是工业的粮食,能源安全事关国家根本安全。当今国际局势风云变幻,全球地缘政治、经济、科技体系正经历深刻变化,能源局势将更加错综复杂,威胁能源安全的各种“灰犀牛”“黑天鹅”事件时有发生,促使国际能源版图深刻变迁。作为世界最大的能源消费国,如何有效保障国家能源安全、有力保障国家经济社会发展,始终是我国能源发展的首要问题。只有把能源的饭碗端在自己手里,充分保障国家能源安全,才能把握未来发展主动权,牢牢守住新发展格局的安全底线。当下,随着新一代信息技术的蓬勃发展,能源行业的数字化和智能化程度也在不断加深,网络与数据安全深刻影响着整体能源安全的各个方面。随之,能源领域敏感数据的泄露、滥用、篡改等安全威胁也接踵而至,影响整体能源安全,进而威胁国家安全。因此,制定相关政策和标准,从合规维度赋能能源网络与数据安全体系建设至关重要。
C#上位机(驱动实验).zip
计算机专业毕业时间之VB精品论文源代码资源
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
SQLyog-13.1.4-0.x64Community
源代码-Excel二维表数据转SELECT CASE 工具 v2.0.zip
计算机专业毕业设计VB精品论文资源
WX小程序源码影音娱乐提取方式是百度网盘分享地址
c语言文件读写操作代码 C语言读写文件,非常适合小白学习 C语言读写文件,非常适合小白学习 C语言读写文件,非常适合小白学习 C语言读写文件,非常适合小白学习 C语言读写文件,非常适合小白学习
大学生毕业答辨ppt免费模板【不要积分】下载可编辑可用(136).zip
计算机专业毕业设计VB精品论文资源