什么是使用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