使用openssl命令行的Java SHA1 WithRSA

使用openssl命令行的Java SHA1 WithRSA,java,openssl,rsa,digital-signature,sha1,Java,Openssl,Rsa,Digital Signature,Sha1,我有下面一段Java代码,我想使用openssl命令行工具将其转换为shell脚本: java.security.Signature sig = java.security.Signature.getInstance("SHA1WithRSA"); sig.initSign(privateKey); sig.update(data); byte[] signatureBytes = sig.sign(); 到目前为止,我尝试了以下方法: openssl dgst -sha1 -binary &

我有下面一段Java代码,我想使用openssl命令行工具将其转换为shell脚本:

java.security.Signature sig = java.security.Signature.getInstance("SHA1WithRSA");
sig.initSign(privateKey);
sig.update(data);
byte[] signatureBytes = sig.sign();
到目前为止,我尝试了以下方法:

openssl dgst -sha1 -binary < data.der > data.hash
openssl rsautl -sign -inkey private.key -keyform pem -in data.hash -out data.rsa
openssldgst-sha1-binarydata.hash
openssl rsautl-sign-inkey private.key-keyform pem-in data.hash-out data.rsa
但是,它不会产生相同的输出。我想这可能与格式或填充等有关。我需要做什么来更正openssl脚本

上面的两个代码都会产生一个可重复的结果,但是java和openssl shell脚本之间的结果是不同的

欢迎所有建议

问候
詹斯

我终于自己找到了答案

以下openssl命令将使用RSA执行SHA1,并生成与Java代码相同的结果:

openssl sha1 -sign private.key -out data.rsa data.der

就这么简单,但在网上很难找到

谢谢,我遇到了同样的问题,并从你的答案中解决了