0

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

有没有类似的方法来获取 JavaScript 或打字稿中的密钥大小?

var bytesModulus = Convert.FromBase64String(modulusString);

using (var rsa = new RSACryptoServiceProvider())
{
 var rsaKeyInfo = rsa.ExportParameters(false);

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

 return rsa.KeySize;
}
4

1 回答 1

0

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

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

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