java - 如何使用来自 java PKCS#12 keystore 的证书来加密和解密文件?

标签 java cryptography pkcs#12

<分区>

谁能解释如何使用存储在 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/

相关文章:

.net - 160 位 SHA1 散列的前 32 位是否可以替代 CRC32 散列?

ios - 如何下载 CoreCrypto.framework?

api - OAuth PKCS p12 私钥的 Google API 密码是什么?

java - Netbeans 无法找到或加载主类

java - 在 Eclipse 编辑器中检测选项卡关闭

python - 如何在 Python 中验证 RSA SHA1 签名?

ssl - 如何修复从 jks 到 pkcs12 的信任库类型

openssl - 使用 OpenSSL 将 PKCS#12 证书转换为 PEM

java - OS X 上的 Openssl key 生成失败

java - DatabaseMetaData#g​​etTables 在 Derby 中找不到现有表