来自JavaScript中的模数和私有指数的RSA私钥

时间:2016-04-26 18:33:30

标签: javascript cryptography rsa private-key

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

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

Java 7中的

RSAPrivateKeySpec能够使用mod和private Exp生成RSA私钥。我正在寻找JavaScript中的等价物。

我也尝试了npm ursa模块,遗憾的是没有成功。

2 个答案:

答案 0 :(得分:2)

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

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

在解密过程中不使用公共指数,因此您可以简单地将一些垃圾十六进制传递给它,但它可以是&#34; 03&#34; (3),&#34; 11&#34; (17)或&#34; 010001&#34; (65537)。

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

答案 1 :(得分: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)