Java 为什么pkcs12的keyStore.alias()为空
我正在尝试使用以下代码从.p12文件加载PrivateKey:Java 为什么pkcs12的keyStore.alias()为空,java,security,encryption,bouncycastle,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_
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文件,但我不确定是否应该一起使用。是否可能密钥库中没有任何内容?使用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]:
...
...
如果密钥库中有条目,您应该看到每个条目的“别名”。如果密钥库中没有条目,您将看到“您的密钥库包含0个条目”,您需要将它们导入密钥库
另外,在加密时,您应该使用其他人的公钥进行加密,他们将使用他们的私钥进行解密。他们用你的公钥加密,你用私钥解密。谢谢你的回复,它给出:Keystore type:PKCS12 Keystore provider:SunJSSE您的Keystore包含0个条目,然后将其导入Keystore:
keytool-v-importkeystore-srckeystore my_domain\u com.p12-srcstoretype PKCS12-destkeystore truststore.jks-deststoretype jks
并显示:导入命令完成:成功导入0个条目,0个条目失败或取消[Storing truststore.jks],这证实了我的怀疑。你的密钥库是空的。在使用密钥库之前,您需要生成密钥或将密钥导入密钥库。密钥库用于SSL证书和VeriSign文件。可以使用这些文件进行加密和解密吗?您不能将该密钥库用于任何用途。它是空的。里面没有钥匙。我也不知道它是怎么用的。您需要先将密钥导入密钥库,然后才能使用它。