2016-09-25 68 views
3

我試圖在我的Java應用程序中實現一些加密。 加密應該工作如下:具有特定填充的RSA最大消息長度

  1. 隨機生成n位的AES密鑰
  2. 使用RSA公鑰
  3. 發送加密AES密鑰服務器
  4. 加密數據與AES密鑰+送
  5. 加密AES密鑰服務器

我很難決定使用什麼樣的填充算法。我讀OAEPWithSHA-1AndMGF1Padding是一個不錯的選擇,但是我可以用這個加密的最大消息長度是多少?

我需要知道確切的最大字節我的AES密鑰可以使用RSA加密OAEPWithSHA-1AndMGF1Padding

RSA密鑰的長度也有所不同。我可能會去2048位。

TL; DR:我可以使用2048位RSA密鑰加密多少個字節,其中OAEPWithSHA-1AndMGF1Padding

回答

6

您所描述的內容被稱爲Hybrid Encryption,它是獲得對稱密鑰加密系統的速度以及RSA兩個密鑰的優點的常用方法。

至於細節:

2048位RSA密鑰允許其中的OAEP填充需要42個字節,留下用於加密數據214周圍字節256個字節。 AES-256密鑰長度爲256位(32字節),因此它有足夠的空間。

+1

AES還支持128位和192位的密鑰大小。 – zaph

+0

那麼帶有SHA1和MGF1的OAEP需要42個字節?如果我使用SHA256和MGF1使用OAEP,不需要使用更多的字節嗎? – kwantuM

+0

是否有任何文件檢查這些算法使用的字節?或者也許是一個公式? – kwantuM