2012-07-16 61 views

回答

12

只需選中RSA PKCS#1 v2.1 standard, chapter 7.2

RSAES-PKCS1-v1_5中加密((N,E),M)

輸入:

  • (N,E)接收者的RSA公鑰(k表示模數n的八位字節長度 )
  • M要加密的消息,長度爲mLen的八位組串, 其中MLEN < = K - 11

所以輸入取決於密鑰的大小。 k是關鍵字大小,但是以八位字節爲單位。因此,對於1024位密鑰,1024/8 - 11 = 117個字節爲最大純文本。


請注意,以上是使用PKCS#1 v1.5填充的RSA的最大大小。對於較新的OAEP填充以下可以chapter 7.1找到:

RSAES-OAEP-ENCRYPT((N,E),M,L)

...

輸入:

  • (N,E)接收者的RSA公鑰(k表示在RSA模數n的八位位組 的長度)
  • 中號消息被加密,升的八位組串其中mLen < = k-2hLen-2
  • l與消息相關聯的可選標籤;所述 缺省值L,如果沒有提供L,是空字符串

在哪裏的hLen是用於掩碼生成函數的哈希函數的輸出的大小。如果使用默認的SHA-1散列函數,則消息的最大大小爲k-42(因爲SHA-1的輸出大小爲20字節,而2 * 20 + 2 = 42)。


通常,隨機生成的密鑰被加密而不是消息。然後用該祕密密鑰加密該消息。這允許幾乎無限長的消息,並且對稱密碼 - 比如CBC模式下的AES - 比非對稱密碼快得多。這種組合稱爲hybrid encryption


輸出大小爲RSA加密或簽名生成用的任何填充數據是相同的以字節爲單位模量的大小(四捨五入向上,當然),所以對於一個1024位的密鑰將是必要的1024/8 = 128個八比特組/字節。

請注意,計算大小的輸出數組可能包含設置爲零的前導字節;這應該被認爲是正常的。

+0

這是一個相當古老的問題,但是因爲我在研究問題的一部分時偶然發現了這個問題:我認爲這個答案不能回答整個問題,它也會要求預期的*密文*的大小,不僅僅是對輸入大小的限制。即給定2048位的RSA密鑰,給定特定的明文消息時產生的*密文*有多大?你的回答沒有解決這個問題(或者我錯過了)。 – malexmave 2017-10-31 18:31:38

+1

@malexmave在答案中增加了另一節。忘了它,因爲它是顯而易見的。 **警告** 1024位密鑰大小隻是一個例子,強烈建議使用2048位密鑰或更高的密鑰。 – 2017-10-31 18:42:01