如何使用java PKCS#12密钥库中的证书来加密和解密文件?

任何人都可以解释如何使用存储在java’PKCS#12`密钥库中的证书加密和解密文件?

提到Eugene Mayevski,你的问题是错误的,不能以原始forms回答。 但我会试着为你澄清一下。 PKCS#12 – 加密格式用于存储证书和私钥。 加密或解密数据时,使用密码实现和PKCS#12容器的内容。

Java具有与PKCS#12密钥库一起使用的内置支持,使用此容器与标准JKS密钥库没有太大区别。

例如,加载JKS密钥库的代码

 KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType()); store.load(is, password.toCharArray()); 

和加载PKCS#12密钥库的代码

 KeyStore store = KeyStore.getInstance("PKCS12"); store.load(is, password.toCharArray()); 

之后,您可以无限制地获得密钥库内容。 您可以获取存储在密钥库中的证书和密钥,而不需要在Firefox中使用导入/导出进行奇怪的操作。

 Key key = store.getKey("alias_for_key", password.toCharArray()); 

接下来,当你有密钥和证书时,就是加密。 用于加密。 你需要Cipher类的实例。

 Cipher c = Cipher.getInstance(key.getAlgorithm()); c.init(Cipher.ENCRYPT_MODE, key); 

密码准备加密。 如果加密数据相对较小,则可以使用update()方法,其他方法是创建CipherOutputStream

要解密,只需使用不同模式的init cipher,并依赖于加密算法密钥。 对于对称算法,密钥将相同,对于非对称算法,加密使用公钥,并用于解密私钥。

在本文中,您可以了解有关加密的更多信息。

这篇博文应该完美地解释给你 。

将PKCS12加密与PEM文件一起使用。

要使其运行,首先需要PFX(个人文件交换)格式的Java密钥库。

Keytool命令:

  keytool -genkeypair -alias mykeystore -keypass lala -keystore mykeystore.pfx -storepass lala -validity 10000 -keyalg RSA -keysize 2048 -storetype pkcs12 

这将生成mykeystore.pfx文件。 此文件可以作为Firefox中的证书导入。

导入 – 打开Firefox – 工具 – 选项 – 高级 – 查看证书 – 您的证书 – 导入 – 选择PFX文件 – 导入它。

导出 – 选择证书 – 查看 – 详细信息 – 将其导出到X.509 PEM)。 (你也可以导出到DER)

1.私钥

首先,我们需要从PFX文件中提取私钥。

2.公钥

其次,您需要使用公钥加密文件。 但首先你需要公钥。

3.使用公钥加密

现在您有了可以加密文件的公钥。

4.使用私钥解密

所以现在文件被加密了,它可以被发送/存储给接收方……好吧……接收它并解密它。 要解密它,我们需要私钥,幸运的是保存/存储在private.pem文件中

5.使用AES密钥加密/解密

加密/解密内容的另一种方法是通过AES 256位密钥。 密钥将按文件随机生成并写入文件系统。 然后可以使用上述RSA机制加密此AES密钥。 这将提高大型文件的加密性能。

来源 – http://coenos.com/blog/?p=257