2013-04-17 152 views
0

我已经64基在文件编码的数字签名称为digital_signatue1.txt:OpenSSL:已验证RSA加密的公钥数据证书

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: 

任何想法,我做错了吗?

+0

我终于明白了。事实证明,我并没有使用发件人的实际证书,而是使用“-inkey”选项后的其他人的证书。哎呀! – Luke

回答

0

根据签名验证理论,它要求如下: 1.签名的数据。 2.数据签名 3.公钥。

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