【问题标题】:Openssl: Verify RSA encrypted data with public key in certificateOpenssl:使用证书中的公钥验证 RSA 加密数据
【发布时间】:2013-04-17 01:29:58
【问题描述】:

我在一个名为 digital_signatue1.txt 的文件中有一个 base64 编码的数字签名:

LE3v7aHDOtCYEWrURYfxrq4tAx5zg0siBK0yBdYJTxWTFw/tLoEOcT0JZPRy8RMY
bkCuLClsdVnjYhyfots3RyVl4uaSd2gpEnIN6YCo/DBCBltfWri3rFwtSeV/Gm9K
4+fMNiziTYjUWFS+1v1rbFxv4MbsRFEfYEtU0+xVHN8=

为了对这个数字签名进行base64解码,我使用了以下命令:

openssl base64 -d -in digital_signature1.txt -out digital_signature2.txt

然后为了验证数字签名是否由发件人签名,我使用了以下命令:

openssl rsautl -verify -inkey sender-cert.pem -certin -in digital_signature2.txt

但是,它给了我以下输出:

Loading 'screen' into random state - done
RSA operation error
4080:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not     01:./crypto/rsa/rsa_pk1.c:100:
4080:error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check     failed:./crypto/rsa/rsa_eay.c:699:

知道我做错了什么吗?

【问题讨论】:

  • 我终于想通了。事实证明,在“-inkey”选项之后,我没有使用发件人的实际证书,而是使用了其他人的证书。糟糕!

标签: openssl rsa encryption


【解决方案1】:

根据签名验证理论,它需要以下内容: 1. 签名的数据。 2. 数据签名 3. 公钥。

在这里,您有签名和公钥,但我怀疑数据在哪里? 数据必须位于使用 rsautl 签名的 digital_signature2.txt 中。请检查 digital_signature2.txt 格式是否正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多