2016-04-26 82 views
1

我有一个模数和私人指数。我如何从JavaScript生成一个JavaScript的RSA私钥?从模数和私人指数在JavaScript中的RSA私钥

或者如果这些值不足以生成RSA私钥。我可能需要什么其他价值。

RSAPrivateKeySpec在Java 7中能够生成带有mod和私有Exp的RSA私钥。我正在寻找JavaScript中的等价物。

我也试过npm ursa模块,很不幸没有解决。

+0

[如何计算公共和私人指数的RSA模数?](http://stackoverflow.com/questions/5747013/how-to-factor-rsa-modulus -given-the-public-and-private-exponent) –

回答

2

JSBN能够创建可解密的RSA私钥。

var sk = new RSAKey(); 
sk.setPrivate("<modulus hex>", "<public exponent hex>", "<private exponent hex>"); 
var plaintext = sk.decrypt("<ciphertext hex>"); 

公用指数不解密期间使用,所以你可以简单地传递一些垃圾十六进制到它,但它不是“03”(3),“11”(17)或“010001”(65537) 。

您需要包含jsbn.js,jsbn2.js,rsa.js和rsa2.js.请记住,解密将比完整RSA密钥慢4倍,因为中国剩余定理不能使用。

+0

谢谢Artjon。但是有没有一种方法可以获得完整的私钥?也许PEM文件或私钥组件的其余部分 – WiseWins

+0

它看起来并不像JSBN能够读取或写入PEM编码的密钥,但您可以自己编写解码器/编码器。关键组件始终可用:[代码](https://github.com/jasondavies/jsbn/blob/v1.4/rsa.js#L63-L73) –

1

模数和私人指数,在技术上,足以产生一个RSA私钥,抽象;它们仅仅不足以生成RSA私钥,其输入用于使用Chinese remainder theorem优化解密。 (As Artjom B.'s answer notes,一些实现能够执行这个非优化解密;但是,有些则不是)

创建 RSA私钥,其输入,用于优化,你需要原来的素数pq。有没有简单,确定性方式来从模数和私人指数获得这些,但方法存在搜索他们在一个足够小的空间处理。看到这个问题的答案:Calculate primes p and q from private exponent (d), public exponent (e) and the modulus (n)

+0

关于保留模数的好建议,但我没有看看问题是如何重复的。 –