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

我正在尝试使用以下代码从.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); 

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

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

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

 >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个条目”,您需要将它们导入密钥库。

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