簡體   English   中英

使用Openssl和C ++從公鑰中提取模數和指數

[英]Extracting modulus and exponent from public key using Openssl and C++

因此,我目前正在研究網絡的工作方式。 我從wireshark得到了一堆數據包,這些數據包已經復制到緩沖區中(只有內容,沒有標題。Wireshark->關注TPC流-> C數組)。 我可以理解協議,但是在第三個數據包中需要進行密鑰交換。 經過一番谷歌搜索后,我發現我需要RSA加密。 它向我發送了一個公鑰+令牌。 而且我應該返回我之前收到的加密共享密鑰(剛剛生成)和加密令牌。

RSA_key需要指數和模數,所以我的問題是:如何從單個char []緩沖區(公共密鑰)創建RSA_key對象。

注意:經過長時間的谷歌搜索,我要在這里發布。 我可能不會使用正確的關鍵字,因為我不會說英語。 我可以找到僅用php詢問的線程。 我發現的最有用的(我認為)鏈接是http://www.techper.net/2012/06/01/converting-rsa-public-key-modulus-and-exponent-into-pem-file/

謝謝。

PS:我在嗅探《我的世界》並模擬客戶端(我之所以選擇它,是因為該游戲很流行,而且我知道如果遇到問題我會在網上找到資源)。 但是我的問題是如何從公共密鑰中獲取模數和指數 ,格式為: http : //pastebin.com/J9ddhgW5 (即表示公共密鑰的字節)

哦,我忘了,第一列是字節位置,第二列是類型轉換為int的字節值,第三列再次是值,但是(int)(unsigned char),所以我可以看到它的+127,第四列是的十六進制表示該值和最后一列是基於ascii表的字符(如果其可見字符)。

您發布的數據是ASN.1編碼(DER)RSA公鑰:

$ openssl ssl rsa -inform der -pubin -text < 12120862.key 
Public-Key: (1024 bit)
Modulus:
    00:81:1f:1d:00:7e:d0:c7:e2:2f:31:3d:0d:f0:a8:
    ab:c1:ea:66:ba:af:1d:a4:eb:b3:fd:51:58:1c:1d:
    81:ae:f0:99:9e:5c:26:67:b5:41:14:28:79:c0:29:
    e5:56:96:06:b7:4b:a0:c9:7f:41:46:9a:7e:85:10:
    a0:91:ea:58:bd:78:78:6d:3c:07:2a:3d:61:f3:ed:
    42:8b:1e:dc:6d:2d:21:41:7a:e8:15:51:0d:75:84:
    be:20:8c:76:43:8b:4b:67:6b:49:09:e9:20:a1:11:
    53:a0:d9:30:b1:c2:27:a6:09:e1:56:36:ed:7e:9b:
    23:e2:df:5b:bd:c5:66:ca:c5
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCBHx0AftDH4i8xPQ3wqKvB6ma6
rx2k67P9UVgcHYGu8JmeXCZntUEUKHnAKeVWlga3S6DJf0FGmn6FEKCR6li9eHht
PAcqPWHz7UKLHtxtLSFBeugVUQ11hL4gjHZDi0tna0kJ6SChEVOg2TCxwiemCeFW
Nu1+myPi31u9xWbKxQIDAQAB
-----END PUBLIC KEY-----

在OpenSSL中,可以使用d2i_RSA_PUBKEY函數從ASN.1編碼的文件(如此文件)中獲取公共密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM