javascript - 生成 1024 位 RSA key 对并将公钥以 ASN.1 格式(十六进制)保存在 node.js 中

标签 javascript node.js openssl minecraft asn.1

希望有人能够在这里给我一点帮助。

我需要生成一个 1024 位 RSA key 供一次性使用(每次运行后都会被丢弃)并将公钥传递给远程客户端。远程客户端期望 key “采用 x509 中定义的 ASN.1 格式”。 (我知道如何首先使用 openssl 制作私钥,然后如何提取公钥 - 都是 ascii 格式。我坚持转换为 ASN.1,它需要为十六进制)

它用于与 Minecraft 客户端通信时使用。 (我写的就是服务端)

以下是我必须处理的信息,描述了所需内容: http://wiki.vg/Protocol_Encryption#Key_Exchange (特别是 key 交换部分)

我理想情况下需要在 Node.js 中执行此操作。 (或者如果可以的话,对 openssl 的系统调用就可以了)

!((此行下方的信息可能不相关))

这个想法是我将 ASN.1 格式的公钥发送给客户端。客户端加密密码并将其发送回我(服务器),我需要解密并存储密码以供以后使用。

我的服务器是用node.js编写的,因此如果我能在node.js中完成它,或者通过调用openssl作为命令提示符,我将非常感激。

请注意,我对 ASN.1 知之甚少,所以我可能遗漏了一些明显的东西。 (希望如此)

我在谷歌上搜索了几个小时,发现了很多与该主题相关的内容,但我要么无法正确理解它们,要么根本无法使它们发挥作用。

需要明确的是 - 我不希望使用 ASN.1 加密任何数据 - 我只需要以 ASN.1 格式将公钥发送到客户端。 (想必我可以使用开始时生成的私钥轻松解密通过调用 openssl 发回的加密密码)

如果有人可以在这里帮助我,我将非常感激。

詹姆斯

最佳答案

为了获得我需要的东西(使用 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

解密从 Minecraft 客户端发回的 key

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

希望对某人有帮助。 :)

关于javascript - 生成 1024 位 RSA key 对并将公钥以 ASN.1 格式(十六进制)保存在 node.js 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749588/

相关文章:

javascript - 错误处理程序的 JQuery 错误属性

javascript - 谷歌图表工具提示

java - 如何在 java 中读取 rsa 公钥文件?

使用键值计算键检查值

javascript - 如何获取 jasmine-node 中错误的堆栈跟踪?

javascript - 如何对嵌套对象进行字符串化以使用 queryParams 发出 graphql/GET 请求?

node.js - 如何在 Node 中使用国家标志并使用react

node.js - 编辑组件 html 时 Angular CLI 不会重新加载?

node.js - 如果 dynamodb 中不存在项目,则无法返回数组

python - 如何检查 Python,是否与证书关联的 key