OpenSSL smime命令创建的输出与我的java代码不同

OpenSSL smime命令创建的输出与我的java代码不同,java,openssl,digital-signature,smime,Java,Openssl,Digital Signature,Smime,我在我的密钥库中创建了一个密钥对,使用这对密钥,我想创建以下curl命令的Java等效代码 openssl smime-sign-in req.xml-nointern-nodetach-nocerts-nochain-outform PEM\ -out req_signed.txt-signer you.cer-inkey private.key-passin pass:HIDDEN 我的Java方法如下所示: public byte[]符号(布尔includeCerts)引发General

我在我的密钥库中创建了一个密钥对,使用这对密钥,我想创建以下curl命令的Java等效代码

openssl smime-sign-in req.xml-nointern-nodetach-nocerts-nochain-outform PEM\
-out req_signed.txt-signer you.cer-inkey private.key-passin pass:HIDDEN
我的Java方法如下所示:

public byte[]符号(布尔includeCerts)引发GeneralSecurityException、OperatorCreationException、CMSExException、IOException{
试一试{
java.security.cert.Certificate[]certChain=KeyStoreUtil.getCertificateChainCombined(别名);
if(certChain==null | | certChain.length<1)
抛出新的GeneralSecurityException(“别名\”“+别名+”\”“”的证书链为null或为空);
List certList=new ArrayList();
对于(int i=0;i
但是OpenSSL和Java的输出是不同的。我做了很多搜索,但什么地方都找不到。我想说,我不熟悉数字签名


我的代码有什么问题吗?我做错了什么?

关于堆栈溢出和OpenSSL用户列表。我已经在代码中尝试过了。但是它创建了不同的。curl命令的输出以------BEGIN PKCS7------开始,以------END PKCS7------结束。我怀疑我在JAVA代码中应用了正确的逻辑。因为JAVA代码的输出不是以------BEGIN PKCS7------开始的,所以我对堆栈溢出和OpenSSL用户列表非常感兴趣。我已经在代码中尝试过了。但是它创建了不同的。curl命令的输出以------BEGIN PKCS7------开始,以------END PKCS7------结束。我怀疑我在JAVA代码中应用了正确的逻辑。因为JAVA代码的输出不是以------BEGIN PKCS7------开始的,所以我真的很累