如何在Java中生成加密签名PKCS#7?

如何在Java中生成加密签名PKCS#7?,java,security,cryptography,keystore,Java,Security,Cryptography,Keystore,我正试图用Java(JDK1.7)开发一个模块,用PKCS#7加密信封将数字签名应用于数字文档 我正在使用java类KeyStore(java.security.KeyStore),我拥有一个文件KeyStore.ks,并且我有凭证(密码) 我尝试在内部打印证书的第一件事是使用以下代码: public static void main(String[] args) throws Exception { String keystoreFilename = PATH_TO_KEYST

我正试图用Java(JDK1.7)开发一个模块,用PKCS#7加密信封将数字签名应用于数字文档

我正在使用java类
KeyStore
java.security.KeyStore
),我拥有一个文件
KeyStore.ks
,并且我有凭证(密码)

我尝试在内部打印证书的第一件事是使用以下代码:

 public static void main(String[] args) throws Exception {

      String keystoreFilename = PATH_TO_KEYSTORE;
      char[] password = KEYSTORE_PASSWORD.toCharArray();

      FileInputStream fIn = new FileInputStream(keystoreFilename);

      KeyStore keystore = KeyStore.getInstance(KEYSTORETYPE);


      Provider temp = keystore.getProvider();

      System.out.println(temp.getName());

      KeyStore keystore = KeyStore.getInstance(KEYSTORETYPE);
      FileInputStream input = new FileInputStream(PATH_TO_KEYSTORE);
      try {
           keystore.load(input, KEYSTORE_PASSWORD.toCharArray());
      } catch (IOException e) {
           System.out.println("ERROR:"+e.getMessage());
      } finally {
           if (input != null) {
                input.close();
           }
       }

      Certificate cert = keystore.getCertificate(KEY_ALIAS_IN_KEYSTORE);

      System.out.println(cert);
 }
此代码返回以下内容:

error: "Invalid keystore format" (KEYSTORETYPE = "JKS")
当我试图承载其中包含的大量证书时


有谁能告诉我出了什么问题吗?

您的KEYSTORETYPE似乎与用于创建keystore.ks文件的类型不匹配

标准中提供了两种不同的类型,其他供应商也提供了其他类型

标准是“jks”,也很常见的是“pkcs12”