1

うまくいけば、誰かがここで私に少し助けを与えるのに十分です.

一度だけ使用する 1024 ビットの RSA キーを生成し (実行ごとに破棄されます)、公開キーをリモート クライアントに渡す必要があります。リモート クライアントは、キーが「x509 で定義されている ASN.1 形式」であることを期待しています。(最初にopensslで秘密鍵を作成する方法と、次に公開鍵を抽出する方法を知っています-両方ともASCII形式です。16進数である必要があるASN.1への変換に行き詰まっています)

Minecraft クライアントと通信するときに使用します。(私が書いているのはサーバーとして機能します)

必要なものを説明するために取り組まなければならない情報は次のとおりです: http://wiki.vg/Protocol_Encryption#Key_Exchange (具体的には鍵交換セクション)

理想的には、node.js でこれを行う必要があります。(または、openssl への syscall で十分です)

!(((この行の下の情報は関係ない可能性があります))

アイデアは、ASN.1 形式の公開鍵をクライアントに送信することです。クライアントはパスワードを暗号化し、後で使用するためにパスワードを復号化して保存する必要がある私 (サーバー) に送り返します。

私のサーバーはnode.jsで書かれているので、node.js内でそれを行う方法、またはコマンドプロンプトとしてopensslを呼び出す方法についての提案は大歓迎です。

私は ASN.1 についてほとんど知らないので、明らかな何かが欠けている可能性があることに注意してください。(うまくいけば)

私は数時間グーグルを見回しており、主題に触れる多くのことを見つけましたが、それらを適切に理解できなかったか、単に機能させることができませんでした.

明確にするために-ASN.1でデータを暗号化するつもりはありません-公開鍵をASN.1形式でクライアントに送信するだけです。(おそらく、最初に生成された秘密鍵を使用して、openssl への呼び出しで返される暗号化されたパスワードを簡単に復号化できます)

誰かがここで私を少し助けることができれば、それは非常にありがたいです.

ジェームズ

4

1 に答える 1

0

(openssl を使用して) 必要なものを取得するために、次のことを行いました。

1 秘密鍵の生成

openssl genrsa -out private_key 1024

2 公開鍵のエクスポート

openssl rsa -in private_key -pubout -out public_key

3 公開鍵を DER 形式でエクスポートします。これは、必要な ASN.1 形式のようです。

openssl rsa -outform der -pubin -in public_key -pubout -out public_key.asn1

マインクラフトクライアントから返ってきたパスキーを解読するには

openssl rsautl -decrypt -inkey private_key -in encrypted_data_in -out data_out

それが誰かを助けることを願っています。:)

于 2013-11-04T01:43:21.173 に答える