为什么keyStore.aliases()对于pkcs12是空的

use*_*294 4 java security encryption bouncycastle

我正在尝试使用以下代码从.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);  
Run Code Online (Sandbox Code Playgroud)

我试图找到没有别名的原因.但我无法找到.空的别名可能是什么原因?我想获取私钥并使用此密钥生成一些文本.还有其他的apporach吗?

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

gtr*_*rig 6

密钥库是否可能完全没有任何内容?使用Java keytool命令进行验证.

>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]:
...
...
Run Code Online (Sandbox Code Playgroud)

如果密钥库中有条目,则应为每个条目看到"别名".如果密钥库中没有条目,您将看到"您的密钥库包含0个条目",您需要将它们导入密钥库.

此外,在加密时,您应该使用其他人的公钥进行加密,并且他们将使用其私钥进行解密.它们使用您的公钥加密,您可以使用私钥解密.