【问题标题】:RSA private key from modulus and private exponent in JavaScript来自 JavaScript 中模数和私有指数的 RSA 私钥
【发布时间】:2016-04-26 18:33:29
【问题描述】:

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

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

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

我还尝试了 npm ursa 模块,但不幸的是没有成功。

【问题讨论】:

标签: javascript cryptography rsa private-key


【解决方案1】:

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 倍,因为不能使用中国剩余定理。

【讨论】:

  • 感谢 Artjon。但是有没有办法获得完整的私钥。也许是 PEM 文件或所有其余的私钥组件
  • 看起来 JSBN 无法读取或写入 PEM 编码的密钥,但您当然可以自己编写解码器/编码器。关键组件始终可用:code
【解决方案2】:

模数和私有指数在技术上足以生成 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)

【讨论】:

  • 关于分解模数的好建议,但我不明白这个问题是如何重复的。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多