相关疑难解决方法(0)

为什么我使用OpenSSL和Java生成的RSA-SHA256签名不同?

我想用Java生成一个RSA-SHA256签名,但我不能让它在控制台上生成与OpenSSL相同的签名.

这就是我对OpenSSL所做的事情(遵循本教程):

生成密钥对:

openssl genrsa -out private.pem 1024
Run Code Online (Sandbox Code Playgroud)

提取公钥:

openssl rsa -in private.pem -out public.pem -outform PEM -pubout
Run Code Online (Sandbox Code Playgroud)

创建数据哈希:

echo 'data to sign' > data.txt
openssl dgst -sha256 < data.txt > hash
Run Code Online (Sandbox Code Playgroud)

生成的哈希文件以(stdin)=我手工删除的内容开头(首先忘了提及它,谢谢马塔).

签名哈希:

openssl rsautl -sign -inkey private.pem -keyform PEM -in hash  > signature
Run Code Online (Sandbox Code Playgroud)

要在Java中重现结果,我首先将私钥从PEM转换为DER:

openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -nocrypt > private.der
Run Code Online (Sandbox Code Playgroud)

现在我编写了这个Java类来生成相同的签名:

public class RSATest {

    public static void main(String[] args) throws IOException,
            NoSuchAlgorithmException, InvalidKeySpecException,
            InvalidKeyException, SignatureException {

        byte[] …
Run Code Online (Sandbox Code Playgroud)

java openssl rsa sha256

25
推荐指数
1
解决办法
4万
查看次数

openssl命令行来验证签名

嗨,我已生成密钥对,并使用私钥生成签名.

openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用我的公钥验证签名:

openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig
Run Code Online (Sandbox Code Playgroud)

我知道-sigfile已被弃用.openssl.org的一些在线文档是错误的.

什么命令我应该使用我的公钥来验证信号?

ubuntu command-line openssl digital-signature

22
推荐指数
1
解决办法
8万
查看次数

openSSL rsautl和dgst之间的区别

以下命令为输入文件生成签名:

openssl dgst -sha1 -sign privateKey.pem -out signature1 someInputFile
Run Code Online (Sandbox Code Playgroud)

以下命令还会为输入文件生成签名:

openssl dgst -binary -sha1 someInputFile > digest
openssl rsautl -sign -in digest -inkey privateKey.pem -out signature2
Run Code Online (Sandbox Code Playgroud)

据我所知,他们都应该创建文件的SHA1摘要的RSA签名.但它们不会生成相同的签名.

结果,用方法2生成的签名也不能通过openssl dgst -verify调用来验证.

有人知道区别是什么,以及如何克服这种差异?

openssl digital-signature

21
推荐指数
1
解决办法
2万
查看次数

标签 统计

openssl ×3

digital-signature ×2

command-line ×1

java ×1

rsa ×1

sha256 ×1

ubuntu ×1