我想驗證一個RSA簽名。我有數據要驗證,簽名和模數和指數形式的公鑰。我想使用openssl進行驗證。可能嗎?我知道我可以使用openssl rsautl -verify -in sig -inkey key.pem
,但我不知道如何(使用openssl)創建一個只有模數和指數的公鑰。從模數和指數中創建一個rsa公鑰
也許其他想法如何檢查這個簽名(除了寫一些程序)?
我想驗證一個RSA簽名。我有數據要驗證,簽名和模數和指數形式的公鑰。我想使用openssl進行驗證。可能嗎?我知道我可以使用openssl rsautl -verify -in sig -inkey key.pem
,但我不知道如何(使用openssl)創建一個只有模數和指數的公鑰。從模數和指數中創建一個rsa公鑰
也許其他想法如何檢查這個簽名(除了寫一些程序)?
檢查手冊頁應該給你下面
# 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 *結構。
我不明白它是如何解決我的問題的。我只有兩個數字:一個模數和一個指數。我想創建一個包含基於這些數字創建的公鑰的文件key.pub。沒有其他的。我很久以前問過這個問題,但仍然不知道該怎麼做。 – emstol 2013-06-05 09:32:57
假設您沒有模塊和指數而不是正常的BER包裝 - 您將不得不編寫一些ASN.1包裝來進行打包。 – 2013-06-06 16:37:11
爲了生成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 -verify
或openssl rsautl -verify
」 ......除了寫一些程序......「,如果你閱讀[常問問題](http://stackoverflow.com/faq),你會知道的什麼stackoverflow是。 – 2012-07-18 21:55:52
GregS:不是這樣的:)我有程序可以做到,但我的客戶聲稱不能正常工作。所以爲了證明他是錯的,我想表明,例如openssl(他可以信任)的行爲與我的程序相同。 – emstol 2012-07-19 06:13:53
您是否想要給定模數和指數的RSA *結構? – doptimusprime 2013-03-31 09:12:59