2012-07-18 64 views
5

我想驗證一個RSA簽名。我有數據要驗證,簽名和模數和指數形式的公鑰。我想使用openssl進行驗證。可能嗎?我知道我可以使用openssl rsautl -verify -in sig -inkey key.pem,但我不知道如何(使用openssl)創建一個只有模數和指數的公鑰。從模數和指數中創建一個rsa公鑰

也許其他想法如何檢查這個簽名(除了寫一些程序)?

+1

」 ......除了寫一些程序......「,如果你閱讀[常問問題](http://stackoverflow.com/faq),你會知道的什麼stackoverflow是。 – 2012-07-18 21:55:52

+0

GregS:不是這樣的:)我有程序可以做到,但我的客戶聲稱不能正常工作。所以爲了證明他是錯的,我想表明,例如openssl(他可以信任)的行爲與我的程序相同。 – emstol 2012-07-19 06:13:53

+0

您是否想要給定模數和指數的RSA *結構? – doptimusprime 2013-03-31 09:12:59

回答

-1

檢查手冊頁應該給你下面

# generate private key 
openssl genrsa > key.priv 

# use it to sign something 
echo "Dirk should be given $10" | openssl rsautl -inkey key.priv -sign > msg.sig 

# create a pub key (modules, exp) from the private key 
openssl rsa -pubout <key.priv> key.pub 

# use that to verify the signature. 
openssl rsautl -in msg.sig -verify -inkey key.pub -pubin 

這一切假設你要生鑰匙。如果我理解你的評論在右下方 - 似乎你沒有正常格式的模塊/ exp。因此,您首先必須將其打包到ASN.1 中,以便將其與常用工具一起使用。

你必須爲此編寫一些c/java/etc代碼。一個簡單的方法是使用openssl庫;並填寫RSA *結構。

+1

我不明白它是如何解決我的問題的。我只有兩個數字:一個模數和一個指數。我想創建一個包含基於這些數字創建的公鑰的文件key.pub。沒有其他的。我很久以前問過這個問題,但仍然不知道該怎麼做。 – emstol 2013-06-05 09:32:57

+0

假設您沒有模塊和指數而不是正常的BER包裝 - 您將不得不編寫一些ASN.1包裝來進行打包。 – 2013-06-06 16:37:11

4

爲了生成PEM格式的RSA pbulic密鑰以便與openssl一起使用,您可以按照下列步驟操作。

創建一個ASN1定義文件

修改下面的模板,包括你的模數和指數

​​

不是編輯,你可能還需要腳本這個使用sed的

sed -i "s/%%MODULUS%%/$(xxd -ps -c 256 mymodulus.bin)/" def.asn1 

注意-c 256應該是根據您的密鑰長度以字節爲單位選擇。

您可以對指數使用類似的命令。

生成的RSA密鑰

使用下面的OpenSSL命令。這會給你一個DER編碼的RSA密鑰。

openssl asn1parse -genconf def.asn1 -out pubkey.der -noout 

然後將其轉換成PEM密鑰

openssl rsa -in pubkey.der -inform der -pubin -out pubkey.pem 

驗證使用密鑰

您可以使用openssl dgst -verifyopenssl rsautl -verify

相關問題