<分区>
谁能解释如何使用存储在 java“PKCS#12” keystore 中的证书加密和解密文件?
<分区>
谁能解释如何使用存储在 java“PKCS#12” keystore 中的证书加密和解密文件?
最佳答案
正如 Eugene Mayevski 所说,您的问题是错误的,无法以其原始形式回答。但我会尽力为您澄清一下。 PKCS#12 - 加密格式用于存储证书和私钥。当您加密或解密数据时,您使用 PKCS#12
容器的密码实现和内容。
Java 内置支持使用 PKCS#12 keystore ,使用此容器与标准 JKS keystore 没有太大区别。
例如加载JKS keystore的代码
KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType());
store.load(is, password.toCharArray());
和加载 PKCS#12 keystore 的代码
KeyStore store = KeyStore.getInstance("PKCS12");
store.load(is, password.toCharArray());
之后您可以无限制地访问 keystore 内容。您可以获得存储在 keystore 中的证书和 key ,而无需在 Firefox 中使用导入/导出进行奇怪的操作。
Key key = store.getKey("alias_for_key", password.toCharArray());
接下来,当您拥有 key 和证书时,就是加密。用于加密。你需要 Cipher 类的实例。
Cipher c = Cipher.getInstance(key.getAlgorithm());
c.init(Cipher.ENCRYPT_MODE, key);
密码准备加密。如果加密数据比较小,可以使用update()
方法,其他方法是创建CipherOutputStream
。
要解密,只需使用不同的模式初始化密码,并取决于加密算法和 key 。对于对称算法 key 将相同,对于非对称算法加密使用公钥,而解密私钥。
在此article您可以了解有关密码学的更多信息。
关于java - 如何使用来自 java PKCS#12 keystore 的证书来加密和解密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12618690/