Java SHA1WithRSA使用openssl命令行

时间:2012-07-24 23:50:36

标签: java openssl rsa digital-signature sha1

我有以下要使用openssl命令行工具转换为shell脚本的Java代码:

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

然而,它不会产生相同的输出。我想这可能与格式或填充等有关。我需要做些什么才能纠正openssl脚本?

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

所有建议都表示赞赏。

亲切的问候 延

1 个答案:

答案 0 :(得分:9)

我终于找到了答案。

以下openssl命令将执行SHA1WithRSA并生成与Java代码相同的结果:

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

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