1

だから私は現在、ネットワーキングがどのように機能するかを研究しています。すでにバッファにコピーしたwiresharkからのパケットがたくさんあります(コンテンツのみ、ヘッダーなし。Wireshark-> TPC Stream-> C配列に従ってください)。プロトコルは理解できますが、3番目のパケットではキー交換が必要です。少しグーグルした後、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私はMinecraftをスニッフィングし、クライアント側をシミュレートしています(人気のあるゲームであり、行き詰まったらWeb上でリソースが見つかることを知っていたので選択しました)。ただし、私の質問は、次の形式の公開鍵からモジュラスと指数を取得する方法です。http: //pastebin.com/J9ddhgW5(公開鍵を表すバイト)

忘れてしまいました。最初の列はバイト位置、2番目の列はintに型キャストされたバイト値、3番目の列は再び値ですが(int)(unsigned char)なので、+ 127、4番目の列がの16進表現であるかどうかを確認できます。値と最後の列は、ASCIIテーブルに基づく文字です(表示されている文字の場合)。

4

1 に答える 1

2

投稿したデータは、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でエンコードされたファイル(このようなファイル)から公開鍵を取得できます。

于 2012-08-26T05:57:29.207 に答える