Java SHA1WithRSA 使用 openssl 命令行

标签 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 < data.der > data.hash
openssl rsautl -sign -inkey private.key -keyform pem -in data.hash -out data.rsa

但是它不会产生相同的输出。我想这可能与格式或填充等有关。我需要做什么来更正 openssl 脚本?

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

感谢所有建议。

亲切的问候 延斯

最佳答案

我终于自己找到了答案。

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

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

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

关于Java SHA1WithRSA 使用 openssl 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640906/

相关文章:

java - 无法用Map、ObjectMapper解析Json

java - 尝试使用JFXPasswordField Jfoenix JAVA时出错

android - 如何在 CSipSimple 中更新 OpenSSL 版本?

java - org.apache.commons.vfs2.FileSystemException : Could not connect to SFTP server

java - 线程 "main"javax.crypto.BadPaddingException : Decryption error 中的异常

java - 在 Java 中使用 'Map' 在同一个键下存储多个值(不同类型)

java - 测试向后兼容性?

python - Python 的 Crypto/X509 证书解析库

go - 生成具有特定公共(public)指数的 RSA key

java - 使用 RSA 解密字符串会在开头返回额外的零