如何将RSA密钥号码转换为与OpenSSL兼容的密钥?

如何将RSA密钥号码转换为与OpenSSL兼容的密钥?

问题描述:

我希望能够使用javascript生成私有/公共RSA密钥...如何将RSA密钥号码转换为与OpenSSL兼容的密钥?

到目前为止,我发现了http://www.hanewin.net/encrypt/rsa/rsa.htm,它包含我找到的唯一的Javascript RSA密钥生成器。我创建包装(从演示页面修改代码(见链接)),这里是一个用于密钥:

function genKeys() { 
rsaKeys(1024); 
var p=rsa_p; 
var q=rsa_q; 
var d=rsa_d; 
var u=rsa_u; 
var e=rsa_e; 
var pq=rsa_pq; 

return {"e": e, "p": p, "q": q, "pq": pq, "d": d, "u": u}; 
} 

它的问题是输出给出实际数字(指数,模量,等等),但我需要OpenSSL格式的密钥(base64编码的东西)。有人可以告诉我什么是OpenSSL密钥数据的格式,甚至更好 - 我如何将使用该站点代码生成的密钥转换为OpenSSL密钥?

我想使用pidcrypt(一个js加密库)和红宝石/ OpenSSL的结果...

非常感谢您的任何建议...

OpenSSL的公共密钥格式是由PKCS#1定义。 Base64编码版本是一个PEM格式文件,它是Base64编码的ASN.1 BER格式。

ASN.1不应对一个特别漂亮的格式,但它应该可以有足够的苦劳......

结帐JavaScript的开源Forge项目。它具有生成RSA密钥并将它们导出到PEM(您正在讨论的OpenSSL使用的base64编码的DER格式)的方法。

http://github.com/digitalbazaar/forge/blob/master/README