相关疑难解决方法(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万
查看次数

标签 统计

java ×1

openssl ×1

rsa ×1

sha256 ×1