什麼是使用2048位密鑰(使用pkcs1padding)時的RSA加密輸出大小。是否總是256個字節獨立於輸入大小? 我如何計算其他密鑰大小?RSA加密輸出大小
回答
是,它是。
的輸出尺寸應該總是等於Modulus
(關鍵部分)的大小,因此:
2048 bit Modulus -> 2048 bit output
1024 bit Modulus -> 1024 bit output
...
如果不是,存在於大量攻擊RSA,有關這方面的基本信息,請參閱here。
所以要保證輸出是2048 bit
即使輸入加密是,讓我們說7
,
填充,必須始終進行!
情況有點複雜。有點迂腐,我可以爭辯說,如果模數對於它的比特大小來說比較小(比如它從比特100開始),那麼你有一個公平的機會得到一個實際上比模數短一點的密文。但更重要的是,不是大的輸入值,而是一個聲音填充方案,使RSA更安全。例如,如果使用小指數(例如3),[John Hastad的攻擊](http://www.nada.kth.se/~johanh/rsalowexponent.ps)可與任何確定性填充方案一起使用。 – Perseids 2014-09-06 10:47:21
生成的大小不是填充的結果,它是將函數I2OSP應用於模冪運算的結果的結果。您還應該解釋模數的大小等於密鑰大小。 – 2014-09-06 14:04:24
普通RSA的輸出大小(使用一些填充方案,但不是hybrid encryption)始終是密鑰大小。原因是對於某些公鑰n
,結果是一些整數c
和0<=c<n
。有很多關於RSA的介紹,例如http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-045j-automata-computability-and-complexity-spring-2011/lecture-notes/MIT6_045JS11_rsa.pdf
是的,它始終與密鑰大小相同(以字節爲單位,2048/8 = 256)。
作爲英仙座0和之間正確地解釋的,RSAEP (RSA encryption primitive)的輸出(作爲整數)總是N:
如果該消息代表m不爲0和n-1,輸出 消息代表出之間範圍和停止。
讓c = m^e mod n。
輸出c。
當然,c
是若干。所以你必須將它轉換爲字節才能使用。
您已經提到PKCS1Padding,它是RSAES-PKCS1-V1_5-ENCRYPT加密方案的一部分。你會發現的c
編碼在那裏被指定:
...
步驟4:轉換密文代表C到的 長度k個八位密文C:C = I2OSP (c, k)
...
其中k是以八位字節(字節)爲單位的模數的大小。
所以,是的,答案總是k,模數的大小,這反過來又是密鑰大小,以字節表示。
請注意,OAEP填充使用相同的技術,所以對於OAEP(以及大多數其他較少已知的方案),答案也是正確的。
如果不確定,請閱讀標準!它們通常比人們期望的更具可讀性。 – 2014-09-06 14:06:11
- 1. .NET RSA加密:最小密鑰大小?
- 2. RSA加密數據塊大小
- 3. RSA加密大文件
- 4. 試圖瞭解Java RSA密鑰大小
- 5. C#RSA加密/解密拋出異常
- 6. RSA加密/解密
- 7. Java RSA加密
- 8. RSA Android加密/ RSA PHP解密
- 9. 增加HtmlLogger輸出大小
- 10. openssl AES加密將字節塊大小添加到輸出
- 11. RSA加密返回Java卡小程序
- 12. RSA加密問題[有效載荷數據的大小]
- 13. 爲RSA加密破解大數據
- 14. RSA加密,解密PHP
- 15. RSA解密加密++在PHP
- 16. Java RSA加密 - 解密.NET
- 17. RSA加密問題
- 18. RSA加密問題
- 19. Python的RSA加密
- 20. RSA加密的node.js
- 21. RSA加密公鑰?
- 22. 的Java,RSA加密
- 23. C++的RSA加密
- 24. Bouncycastle加密私鑰PEM輸出:RSA私鑰與私鑰
- 25. 使用RSA加密圖像時出錯
- 26. 加密的AES密鑰太大,無法用RSA解密(Java)
- 27. Java中小於512位的RSA密鑰大小
- 28. 大密鑰大小的加密算法
- 29. UIImagePNGRepresentation增加輸出文件大小而不是減小大小
- 30. JSE加密PyCrypto RSA加密不可能
你有沒有注意到256 * 8 = 2048? – Perseids 2014-09-06 10:17:36
@Perseids。是的,但我不確定輸出總是256字節。是嗎? – hyda 2014-09-06 10:25:44
來自['RSA_size'](https://www.openssl.org/docs/man1.1.0/crypto/RSA_size.html):*「RSA_size()以字節爲單位返回RSA模量大小,可用於確定必須爲RSA加密值分配多少內存。「*(消息大小取決於模數大小)。 – jww 2017-07-03 04:00:44