2017-08-25 154 views
1

我想要生成RSA密鑰對並記錄pubkey參數(模數和指數,n和e),從現有的一組密鑰(der格式)中獲取參數或生成一個來自我自己的參數的pubkey對。從RSA密鑰對中獲取參數

我是trying to do the first with Crypto++,但它吐出來的ders被openssl報告爲無效。今天晚上,Crypto ++ wiki和doc頁面也沒有幫助!

然後我試着研究如何使用一些隨機密鑰參數Crypto ++生成openssl中的密鑰對,但幾個小時後我仍然試圖破譯所有命令行參數。

這不是一個安全密鑰,只是一個項目中的某些單元測試的工作之一我從JWK獲取pubkeys作爲(n,e)對並需要驗證它是否能夠正確驗證簽名。但要做到這一點,我需要private der和public(n,e),並且必須比嘗試使用openssl包裝庫中的一個來簡單記錄關鍵參數,因爲它會生成密鑰對。

+1

如果您使用的是JWK密鑰,那麼您可能會發現['Base64URLEncoder'](https://www.cryptopp.com/wiki/Base64URLEncoder)和['Base64URLDecoder'](https://www.cryptopp.com/wiki/Base64URLDecoder)很有幫助。他們使用網絡安全字母進行編碼和解碼。 – jww

+1

*「沒有幫助Crypto ++ wiki和doc頁面在今晚停止!」 - 是的,現在是固定的。我不知道到底發生了什麼,但文件所有者從'root:apache'改爲'root:root'; wiki temp目錄從'images/temp'改爲'images/tmp'。我與其他管理員交談,沒有人對網站進行更改。我們不知道發生了什麼。 – jww

回答

1

我試圖做的第一與加密+,但OpenSSL的爲無效它吐出來的是分佈式能源報告...

(從鏈接的GitHub):

RSA::PublicKey publicKey(params); 
FileSink pubsink("pubkey.der"); 
publicKey.DEREncode(pubsink); 

當您想要保存subjectPublicKeyInfo時,請使用publicKey.SavesubjectPublicKeyInfo是您正在考慮的RSA密鑰以及OID和版本號等外部X.509包裝。


我又試圖研究如何通過使用一些所作的隨機密鑰加密參數的++生成OpenSSL中的密鑰對,但幾個小時後,我仍然停留試圖破譯所有的命令行參數。

您可能會發現來自Crypto ++ wiki的Keys and Formats有幫助。它還提供OpenSSL和GnuTLS命令。


我想要麼生成RSA密鑰對,並記錄PUBKEY參數(模量和指數,n和e),得到的參數了現有的一組鍵(DER格式)的或產生pubkey對從我自己的參數。

循環返回圍繞這個......有很多關於維基例子在RSA CryptographyRSA Encryption SchemesRSA Signature Schemes

一般來說,Crypto ++編碼ASN.1/DER中的所有密鑰。 LoadSave提供了「主題信息」部分,並且DEREncodeBERDecode僅提供了「原始密鑰」部分。再次看看Keys and Formats

如果要處理PEM編碼密鑰,則需要PEM Pack。它是一個附加組件,您必須下載它,然後構建包含PEM軟件包的庫。

如果您提供具體數據,例如您正在嘗試處理的十六進制編碼密鑰,那麼我們可以更多地說明您應該執行的操作。