Java 加密中的空密钥库

Java 加密中的空密钥库,java,cryptography,keystore,wss4j,Java,Cryptography,Keystore,Wss4j,我使用wss4j来签署消息请求。 但使用此代码对邮件签名时: Document d = signer.build(unsignedDoc, crypto, header) 我总是犯错误 org.apache.ws.security.WSSecurityException: General security error (no certificates for user ... were found for signature) 寻找我发现的原因,en空的密钥存储似乎就是原因 这是我创建加密实

我使用wss4j来签署消息请求。 但使用此代码对邮件签名时:

Document d = signer.build(unsignedDoc, crypto, header)
我总是犯错误

org.apache.ws.security.WSSecurityException: General security error (no certificates for user ... were found for signature)
寻找我发现的原因,en空的密钥存储似乎就是原因

这是我创建加密实例的方式:

private void createCrypto(){
   // reading preferences (keystone-filename, password, etc.) from properties file
   Properties prop = new Properties();
   FileInputStream fis = new FileInputStream("myprops.properties");
   props.load(fis);

   // create a crypto instance
   Crypto crypto = CryptoFactory.getInstance(props);

   // This line always prints "Size:0"
   System.out.println("Size:" + crypto.getKeyStore.getSize())
   ...
但是,如果按以下方式加载密钥库,它将显示size=1:

private void loadKeystore(){
   KeyStore keystore;
   try{
   // reading and loading keystone file
   InputStream is = new FileInputStream("myKeyStore.jks");
   keystore.load(is, "password".toCharArray());
   // Prints "Size:1"
   System.out.println("Size:"+keystore.size());
   ...
所以我想知道,第一个例子有什么问题。为什么密钥库是空的? 我已经检查了属性:密钥库和密码设置正确! 但是如果我从属性文件中删除keystore属性,错误消息是相同的


有人能帮我吗?

你能用
keytool
列出密钥库中的条目并分享结果吗?我不想发送整个结果,因为我不确定我可以在这里发布什么。但是我可以告诉你,这个密钥工具找到了一个PrivateKeyEntry类型的条目。“myprops.properties”是什么样子的?你能用
keytool
列出密钥库中的条目并分享结果吗?我不想发送整个结果,因为我不确定我可以在这里发布什么。但是我可以告诉你,这个键工具找到了一个PrivateKeyEntry类型的条目。“myprops.properties”是什么样子的?