2012-04-08 117 views
-2

在RSA中,消息長度不應超過(密鑰大小/ 8)字節。爲什麼會有這樣的限制?什麼是輸入(比如說「abcde」)在將其輸入到RSA算法之前轉換成什麼輸入字符串「abcde」的大小?RSA中的消息長度限制

回答

3

RSA算法基本上是:

Ciphertext = (Plaintext e) mod n

和解密:

Plaintext = (Ciphertext d) mod n

en一起組成了你的公鑰和dn讓你的私鑰。 e通常是幾個常見值之一,例如65537,n是兩個大素數pq的乘積,它們應該是唯一的,並且定義了密鑰長度(例如1024位)。用於解密密文的d的值使用e,pq來計算。維基百科有更多的細節,如果你有興趣:http://en.wikipedia.org/wiki/RSA_(algorithm)。在RSA算法中使用時,明文基本上被視爲一個大整數。

如果你不熟悉模運算符,它基本上是左邊除以右邊的餘數。例如。 17 mod 5 = 2爲5完全除17三次(3 * 5 = 15),剩下的餘數爲:17 - 15 = 2)。

由於模運算符的定義,a mod b的結果總是小於b。鑑於此,並且解密值是執行mod n操作的結果的事實意味着,當解密時,得到的明文值將總是小於n。因此,對於這是您最初加密的實際純文本,輸入必須小於n

爲了保證這一點,該消息被限制爲具有比n更少的位(「數字」)。由於n中的位數是密鑰大小,因此其必須少於keysize bitskeysize/8 bytes(因爲在一個字節中有8位)。

+0

我想你沒有得到我的問題。我的問題是,如果有一個輸入字符串「abcde」,我想用公鑰進行加密,那麼帽子將如何完成。什麼將「ancde」轉換爲? – Ashwin 2012-04-08 09:57:23

+2

它會被轉換成數字。你如何做到這一點取決於「ancde」代表什麼。 (例如,大寫字母是否合法?是數字嗎?是標點符號嗎?)輸入字符串如何轉換爲數字(或輸入是字符串)不是RSA算法的一部分,是它的一部分具體實施。如果你願意,例如,你可以用「01」,「b」和「02」等表示'a',然後用十進制表示。您可以在二進制文件中使用8位ASCII碼。 – 2012-04-08 09:58:40

+0

@David Schwartz:所以你說的是「abcde」可以轉換成這樣的內容:「0102030405」,這對於公鑰是密文的權力? – Ashwin 2012-04-08 10:03:04