5

我正在尝试使用以下代码从 .p12 文件加载 PrivateKey:

    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    java.security.KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");
    keyStore.load(new FileInputStream(new File("my_domain_com.p12")), password);
    keyStore.aliases().hasMoreElements(); //this is false
    java.security.PrivateKey privateKey = (PrivateKey) keyStore.getKey("SomeAlias", password);  

我试图找出没有别名的原因。但我找不到。空别名的原因是什么?我想获取私钥并使用此密钥加密一些文本。还有其他方法吗?

我也有 .cer 文件,但我不确定我应该一起使用。

4

1 回答 1

6

密钥库是否可能根本没有任何内容?使用 Javakeytool命令进行验证。

>keytool -list -v -keystore test.p12 -storetype PKCS12
Enter keystore password:

Keystore type: PKCS12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: test_alias
Creation date: Sep 3, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
...
...

如果密钥库中有条目,您应该会看到每个条目的“别名”。如果密钥库中没有条目,您将看到“您的密钥库包含 0 个条目”,您需要将它们导入密钥库。

另外,加密时,你应该用别人的公钥加密,他们会用他们的私钥解密。他们用你的公钥加密,你用你的私钥解密。

于 2013-09-03T22:29:06.213 回答