RSA 加密长度计算公式

The length of data that can be encrypted using RSA is determined primarily by the size of the key you're using. You appear to be using OAEP, so the maximum length is:

keyLength - 2 - 2 * hashLength

Where keyLength is the length of the RSA modulus in bytes. You're using a 1024 bit key so:

keyLength = 1024 / 8 = 128

And since you're using OAEP with SHA-1

hashLength = 20

So the maximum you can encrypt is:

128 - 2 - 2 * 20 = 86

Which is exactly what your example shows.

To encrypt more data, you could use a larger RSA key, but RSA really shouldn't be used for encrypting large amounts of data, so is usually used as part of a hybrid cryptosystem where RSA is instead used to encrypt a randomly generated key for a symmetric algorithm like AES, and then the symmetric algorithm is used to encrypt the actual data so avoiding the length limits associated with RSA.

posted @ 2014-10-24 14:14  预见者  阅读(870)  评论(0编辑  收藏  举报