2012-09-08 60 views
4

我知道一些小的加密字符串的长度为:160,196 ..什么决定了RSA中加密字符串的长度?

什么决定了大小?

+0

[Block padding](http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Padding)? – 2012-09-08 02:49:22

+0

通常,加密字符串的长度是明文字符串的长度,四舍五入为“块”边界。 –

+0

在我的项目android中,它总是160长度,但在我的iphone项目中它总是196长度。谢谢你的回答 –

回答

2

加密的单个“块”的字节大小与密钥大小相同,该大小与模数的大小相同。私人指数通常大约相同,但可能更小。公开指数的大小可以达到密钥大小,但通常要小得多以允许更有效的加密或验证。大部分时间它是Fermat的第四个数字,65537.

请注意,这是加密数据的位数大小。明文数据必须填充。 PKCS#1 v1.5最多使用密钥大小 - 纯文本的11个字节填充。尽管如此,保持较高的保证金确实很聪明,比如说最小19个字节的填充(16个字节的随机数,而不是8个填充的随机数)。由于这个原因,并且因为执行RSA加密/解密是昂贵的,RSA主要与诸如AES的对称原语结合使用 - 在AES的情况下,随机AES对称秘密密钥被加密而不是纯文本。该密钥然后用于加密纯文本。

+0

感谢您的回答 –

+0

欢迎您Ngo Ky。如果您认为它回答您的问题,那么不要忘记打开接受(答案旁边的V标记)。 –