0

我在一个名为 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:

知道我做错了什么吗?

4

1 回答 1

0

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

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

于 2013-04-17T04:07:35.227 回答