2013-11-03 33 views
1

希望有人能夠在這裏給我一點幫助。生成1024位RSA密鑰對,並在node.js中以ASN.1格式(十六進制)保存公鑰。

我需要生成一次性使用1024位RSA密鑰(在每次運行後丟棄)並將公鑰傳遞給遠程客戶端。遠程客戶端期望該密鑰是「按照x509中定義的ASN.1格式」。 (我知道如何使用openssl首先創建私鑰,然後如何提取公鑰 - 這兩種格式都是ASCII格式的,我堅持要轉換爲ASN.1,它需要使用十六進制)

用於與Minecraft客戶端通信時使用。 (什麼我寫充當服務器)

這裏是我工作過的信息描述什麼是必需的: http://wiki.vg/Protocol_Encryption#Key_Exchange (特別是密鑰交換部分)

我非常需要做到這一點node.js中(或系統調用OpenSSL的將是蠻好的,如果將做)

!((此線以下信息可能不相關))

的想法是,我發送格式的公鑰的ASN.1客戶端。客戶端加密一個密碼並將其發回給我(服務器),在那裏我需要解密並存儲密碼供以後使用。

我的服務器正在寫入node.js,所以我建議如何在node.js中完成它,或者通過調用openssl作爲命令提示符,我將非常感激。

請注意,我對ASN.1知之甚少,所以我可能錯過了一些明顯的東西。 (希望)

我一直在環顧谷歌幾個小時,我已經找到了很多關於這個問題的東西,但我沒有能夠正確理解它們,或者根本無法使它們工作。

要清楚 - 我不想用ASN.1加密任何數據 - 我只需要將公鑰以ASN.1格式發送到客戶端。 (據推測,我可以很容易地解密用openssl調用發回的加密密碼,使用生成的私鑰開始)

如果任何人都可以在這裏幫助我一點,這將非常感激。

詹姆斯

回答

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

希望幫助別人發回的密碼。:)

相關問題