`
dailiang0515
  • 浏览: 33464 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Bouncy Castle使用备份

阅读更多

最近再使用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.Crypto 1.8.1动态库dll

    在本文中,我们将详细探讨BouncyCastle库的核心概念、功能以及如何在.NET项目中使用它。 BouncyCastle项目始于Java平台,后来发展出.NET版本,成为开源社区中广泛使用的密码学库之一。其主要优点在于提供了一个全面...

    POCO相机 android 1.8.6版本

    7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册,空间大小不受限制,与爱生活、爱摄影的人群在POCO.CN上分享创作灵感、学习拍摄技巧、完美图片摄影创作、探讨后期秘籍;...

    jks文件转bks文件.zip

    而`bks`(Bouncy Castle Key Store)文件是Android系统中广泛使用的另一种类型的密钥库,它同样用于存储证书和私钥,但它是基于开源的Bouncy Castle加密库。 `jks`到`bks`的转换过程通常是为了适应Android系统的...

    android-backup-extractor:Android备份提取器

    提取和重新打包使用adb backup (ICS +)创建的Android备份的实用程序。 很大程度上基于AOSP的BackupManagerService.java 。 建造 需要Java11。处理加密备份需要JCE无限强度管辖区策略(如果使用当前的Java 9版本,...

    jdk8解除aes加密限制.zip

    备份原有的政策文件,然后用下载的无限制版本替换它们。 3. **重新启动应用**:完成替换后,确保应用程序或服务器使用的是更新后的JCE政策文件,然后重新启动,就可以使用任意长度的AES密钥了。 4. **验证设置**:...

    酒店管理系统源码 1.5.0.6.zip

    酒店管理系统功能 (前台): 1)、预约房间 2)、入住房间 3)、转换房间 4)、退房结算 5)、添加客户信息 6)、查询客户信息 ...9)、数据库备份和还原(在本地数据库才有效,发行版是连云的数据库,所以没法使用)

    Android源码——Gmail备份手机短信源码.zip

    Android提供了多种加密API,如`java.security`包下的加密算法(AES、RSA等),也可以使用第三方库如Bouncy Castle增强安全性。 6. **Gmail API**:Google提供了Gmail API,允许应用直接与Gmail服务交互。开发者需要...

    华为官方固件APP专用解包工具

    3. **BouncyCastle.Crypto.dll**: 这是一个加密库,BouncyCastle是一个广泛使用的开源密码学API,提供了各种加密算法和协议的支持。在华为固件解包工具中,它可能用于处理固件包中的加密数据,确保安全性和隐私性。 ...

    开发SSH2的完整jar包

    4. **Bouncy Castle**:Bouncy Castle是一个Java安全库,它提供了包括加密算法、密码协议、证书处理等在内的许多功能。在SSH2中,它可能被用作加密和签名算法的后端。 在开发web项目时,这些jar包可以用来实现以下...

    jdk1.4采用RC4加密配置步骤及依赖包

    import org.bouncycastle.jce.provider.BouncyCastleProvider; public class RC4Test { public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); // 然后使用RC4进行加密...

    repository-cos-6.5.4.zip

    1. `bcprov-jdk15on-1.59.jar` - Bouncy Castle Provider,一个广泛使用的Java加密库,用于支持非对称加密算法。 2. `guava-18.0.jar` - Google的Guava库,提供了一系列实用的Java工具类和集合框架。 3. `jackson-...

    SSH2精简jar包

    1. **Bouncy Castle**: Bouncy Castle是一个开源的Java加密库,提供了对SSH协议的支持。在这个精简版中,它可能包含了处理密钥交换、加密、哈希和签名算法所需的类。 2. **JSch**: JSch是另一个流行的Java SSH2实现...

    Backup Exec System Recovery Manager 8.5 中文用户指南

    - **第三方组件声明**:提及了Legion of the Bouncy Castle提供的加密组件,并附带了该组件的许可证条款。 #### 六、技术支持与服务 - **全球支持中心**:提供全球性的技术支持服务,涵盖产品特性咨询、安装与配置...

    u盘的加密(类似加密狗),自己下载来研究吧.zip

    6. **加密库**:除了.NET框架提供的加密类库外,还有许多第三方库,如Bouncy Castle,提供了更多加密算法和功能,可以进一步增强U盘的加密能力。 7. **程序设计**:编写C#应用程序,可以设计一个用户界面,让用户...

    ssh2开发jar包

    3. **Bouncy Castle**:这是一套全面的加密库,提供了许多加密算法,包括用于SSH2协议中的密钥交换和数据加密的算法。 4. **SLF4J (Simple Logging Facade for Java)** 和相应的日志实现库:如Logback或Log4j,用于...

    对国库数据加密解密

    “工具”可能指的是使用的一些加密工具或框架,比如Bouncy Castle,它是一个强大的Java加密库,提供了大量的加密算法和协议实现。 根据文件名称“TreasuryEncrypt.java”,这很可能是一个Java类,用于处理国库数据...

    Java实现的带密码压缩与解压zip文件源码

    在实际应用中,可能需要使用更强大的加密库,如Bouncy Castle,以提供更强的加密算法和更好的安全性。 7. **错误处理**:在处理文件I/O和密码验证时,必须充分考虑异常处理。例如,如果输入的密码不正确,解压缩...

    ICEPDF去水印无乱码

    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....

    elasticsearch-repository-cos ES 7.16.3版本插件

    1. `bcprov-jdk15on-1.59.jar`: Bouncy Castle加密库,提供安全套接字层(SSL)和非对称加密功能。 2. `log4j-core-2.11.1.jar`和`log4j-1.2.17.jar`: Log4j日志框架,用于记录和管理ES运行时的日志信息。 3. `...

    基于ssm+vue在线房屋租赁和电子签约系统.zip

    在Java环境中,可以使用Bouncy Castle等安全库来处理加密和签名操作。此外,系统可能还会集成第三方电子签名服务,如阿里云的签盾服务,以满足法律法规对电子合同的要求。 微信小程序的标签暗示了该系统可能也支持...

Global site tag (gtag.js) - Google Analytics