2013-04-17 149 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是否格式正確。