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

RSA private key from modulus and private exponent in JavaScript

我有一个 modulus 和私有指数。我如何从中生成 Java 脚本中的 RSA 私钥?

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

RSAPrivateKeySpec in Java 7 可以用 mod 和私有 Exp 生成 RSA 私钥。我正在寻找 JavaScript.

中的等效项

我也尝试了 npm ursa module,不幸的是没有成功。

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

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

解密期间不使用 public 指数,因此您可以简单地将一些垃圾十六进制传递给它,但它可以是“03”(3)、“11”(17) 或“010001”( 65537).

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

模数和私有指数,从技术上讲,足以生成RSA私钥,抽象;它们仅不足以生成 RSA 私钥 及其输入 ,用于使用 Chinese remainder theorem. ( 优化解密,一些实现能够执行此非优化解密;然而,有些不是。)

要创建一个 完整 RSA 私钥,其输入用于优化,您需要原始素数 pq。没有简单的、确定性的方法从模数和私有指数中获取这些,但是存在搜索的方法space小到易于处理。查看此问题的答案:Calculate primes p and q from private exponent (d), public exponent (e) and the modulus (n)