从javascript中的模数字符串获取RSA密钥大小

Posted

技术标签:

【中文标题】从javascript中的模数字符串获取RSA密钥大小【英文标题】:Getting RSA key size from modulus string in javascript 【发布时间】:2019-07-19 18:15:32 【问题描述】:

在 C# 中,我们有一种方法可以从模数字符串中计算出 RSA 密钥大小,如下所示,

javascript 或 typescript 中是否有类似的方法来获取密钥大小?

var bytesModulus = Convert.FromBase64String(modulusString);

using (var rsa = new RSACryptoServiceProvider())

 var rsaKeyInfo = rsa.ExportParameters(false);

 rsaKeyInfo.Modulus = modulus;
 rsa.ImportParameters(rsaKeyInfo);

 return rsa.KeySize;

【问题讨论】:

你看到this library 【参考方案1】:

假设密钥遵循使模数介于2^(8n - 1)(2^(8n) - 1) 之间的规则,您只需要知道模数的字节长度(然后乘以 8)。

删除任何空白后,答案将是:

十六进制:字符串length * 4(长度/2为字节,*8​​为位) Base64: ((length + 3) / 4) * 24 — 或者如果您只获得 =-padded 版本:length * 6(长度 / 4 * 3 字节,* 8 位,当输入已知时减少到 * 3 * 2 4 的倍数) 十进制字符串:更难。如果没有 bignum 库,您只能绑定它:它大于 length * 3.3,小于 length * 6.7(或 3 和 7,如果您愿意)。 其他:计算字节长度,乘以 8。

【讨论】:

以上是关于从javascript中的模数字符串获取RSA密钥大小的主要内容,如果未能解决你的问题,请参考以下文章

使用模数和公共指数的 C# RSA 加密

RSA 使用 iOS 和 C# 实现

使用Python从公钥获取RSA指数和模数

如何从字符串获取 PKCS8 RSA 私钥/从 XML 获取 RSA 密钥对

加密大于 RSA 密钥(模数)大小的数据。将拆分的数据加密成块,似乎不起作用。有任何想法吗?

RSA 密钥私有指数大小