最近再使用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); } }
相关推荐
在本文中,我们将详细探讨BouncyCastle库的核心概念、功能以及如何在.NET项目中使用它。 BouncyCastle项目始于Java平台,后来发展出.NET版本,成为开源社区中广泛使用的密码学库之一。其主要优点在于提供了一个全面...
7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册,空间大小不受限制,与爱生活、爱摄影的人群在POCO.CN上分享创作灵感、学习拍摄技巧、完美图片摄影创作、探讨后期秘籍;...
而`bks`(Bouncy Castle Key Store)文件是Android系统中广泛使用的另一种类型的密钥库,它同样用于存储证书和私钥,但它是基于开源的Bouncy Castle加密库。 `jks`到`bks`的转换过程通常是为了适应Android系统的...
提取和重新打包使用adb backup (ICS +)创建的Android备份的实用程序。 很大程度上基于AOSP的BackupManagerService.java 。 建造 需要Java11。处理加密备份需要JCE无限强度管辖区策略(如果使用当前的Java 9版本,...
备份原有的政策文件,然后用下载的无限制版本替换它们。 3. **重新启动应用**:完成替换后,确保应用程序或服务器使用的是更新后的JCE政策文件,然后重新启动,就可以使用任意长度的AES密钥了。 4. **验证设置**:...
酒店管理系统功能 (前台): 1)、预约房间 2)、入住房间 3)、转换房间 4)、退房结算 5)、添加客户信息 6)、查询客户信息 ...9)、数据库备份和还原(在本地数据库才有效,发行版是连云的数据库,所以没法使用)
Android提供了多种加密API,如`java.security`包下的加密算法(AES、RSA等),也可以使用第三方库如Bouncy Castle增强安全性。 6. **Gmail API**:Google提供了Gmail API,允许应用直接与Gmail服务交互。开发者需要...
3. **BouncyCastle.Crypto.dll**: 这是一个加密库,BouncyCastle是一个广泛使用的开源密码学API,提供了各种加密算法和协议的支持。在华为固件解包工具中,它可能用于处理固件包中的加密数据,确保安全性和隐私性。 ...
4. **Bouncy Castle**:Bouncy Castle是一个Java安全库,它提供了包括加密算法、密码协议、证书处理等在内的许多功能。在SSH2中,它可能被用作加密和签名算法的后端。 在开发web项目时,这些jar包可以用来实现以下...
import org.bouncycastle.jce.provider.BouncyCastleProvider; public class RC4Test { public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); // 然后使用RC4进行加密...
1. `bcprov-jdk15on-1.59.jar` - Bouncy Castle Provider,一个广泛使用的Java加密库,用于支持非对称加密算法。 2. `guava-18.0.jar` - Google的Guava库,提供了一系列实用的Java工具类和集合框架。 3. `jackson-...
1. **Bouncy Castle**: Bouncy Castle是一个开源的Java加密库,提供了对SSH协议的支持。在这个精简版中,它可能包含了处理密钥交换、加密、哈希和签名算法所需的类。 2. **JSch**: JSch是另一个流行的Java SSH2实现...
- **第三方组件声明**:提及了Legion of the Bouncy Castle提供的加密组件,并附带了该组件的许可证条款。 #### 六、技术支持与服务 - **全球支持中心**:提供全球性的技术支持服务,涵盖产品特性咨询、安装与配置...
6. **加密库**:除了.NET框架提供的加密类库外,还有许多第三方库,如Bouncy Castle,提供了更多加密算法和功能,可以进一步增强U盘的加密能力。 7. **程序设计**:编写C#应用程序,可以设计一个用户界面,让用户...
3. **Bouncy Castle**:这是一套全面的加密库,提供了许多加密算法,包括用于SSH2协议中的密钥交换和数据加密的算法。 4. **SLF4J (Simple Logging Facade for Java)** 和相应的日志实现库:如Logback或Log4j,用于...
“工具”可能指的是使用的一些加密工具或框架,比如Bouncy Castle,它是一个强大的Java加密库,提供了大量的加密算法和协议实现。 根据文件名称“TreasuryEncrypt.java”,这很可能是一个Java类,用于处理国库数据...
在实际应用中,可能需要使用更强大的加密库,如Bouncy Castle,以提供更强的加密算法和更好的安全性。 7. **错误处理**:在处理文件I/O和密码验证时,必须充分考虑异常处理。例如,如果输入的密码不正确,解压缩...
1. bcprov-ext-jdk15on-1.57.jar 和 bcpkix-jdk15on-1.57.jar:这两个是Bouncy Castle的加密库,用于提供加密和数字签名等安全功能。 2. icepdf-pro-intl-6.3.1.jar、icepdf-core-6.3.1.jar 和 icepdf-viewer-6.3.1....
1. `bcprov-jdk15on-1.59.jar`: Bouncy Castle加密库,提供安全套接字层(SSL)和非对称加密功能。 2. `log4j-core-2.11.1.jar`和`log4j-1.2.17.jar`: Log4j日志框架,用于记录和管理ES运行时的日志信息。 3. `...
在Java环境中,可以使用Bouncy Castle等安全库来处理加密和签名操作。此外,系统可能还会集成第三方电子签名服务,如阿里云的签盾服务,以满足法律法规对电子合同的要求。 微信小程序的标签暗示了该系统可能也支持...