2048 位 RSA 密钥有多长?

信息安全 RSA
2021-09-10 01:01:55

在堆栈溢出:

'2048 位,或 1400 个十进制数字' https://stackoverflow.com/questions/11832022/why-are-large-prime-numbers-used-in-rsa-encryption

在维基百科上:

'RSA-2048 有 617 个十进制数字(2,048 位)。 http://en.wikipedia.org/wiki/Key_size

我不明白 2048 RSA 密钥有多少个十进制数字。

3个回答

一位可以是 0(零)或 1(一)。所以 2048 位给出 2^2048 个不同的数字。一个十进制数字有十个可能的值 0, 1, 2, ... , 9。所以要找到十进制数字的个数来生成 2^2048 个不同的数字,我们需要解决

2^2048 = 10^n

两边取对数(以 10 为底)得到

2048 log(2) = n log(10)

IE

n = 2048log(2) = 616.5 

这意味着您需要 617 位数字。

617 个十进制数字。该stackoverflow答案不正确。

floor(log_10(2^2048)) + 1 = 617

2048 位是 2048 位或二进制数字。这意味着 2048 个数字,可以是 0 或 1。

在 2048 位中,您可以放置​​ 3.2317...E616 不同的值。这是一个大数的科学记数法。1.23E17 表示 123000000000000000,但 3.2317E616 实际上表示 3231700607131100730071487668867...,或者一个总共有 617 个十进制数字的数字。

为了更简单,

  • 在 1 位中,您可以存储 2 个不同的值(0 或 1)。
  • 在 4 位中,您可以存储 16 个不同的值(2*2*2*2 或 2^4)。
  • 在 8 位中,您可以存储 256 个不同的值(2*2*2*2*2*2*2*2 或 2^8 或 2E2)。
  • 在 16 位中,您可以存储 65536 个不同的值(2^16 或 6.5536E4)。
  • 在 32 位中,您可以存储 4294967296 个不同的值(2^32 或 4.2E9)。
  • 在 64 位中,您可以存储 2^64 或 1.8E19 个不同的值。这是一个有 20 个十进制数字的数字 (18446744073709551616)。

因此,在 2048 位中,您可以存储 2^2048 或 3.23E616 个不同的值。这是一个有 617 个十进制数字的数字。

我没有完整阅读您引用的第一篇文章,但是 1400 是错误的,或者是在不同的上下文中。