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发回的加密密码,使用生成的私钥开始)

如果有人可以在这里帮助我一点,将不胜感激。

詹姆士

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 回答