android rsa最大加密明文大小,如何计算RSA密文的大小使用密钥大小&明文长度?...

I've some clear text which I want to encrypt using RSA_PKCS_V21 (using PolarSSL library). The problem is that I need to know size of cipher text before executing the algorithm (for dynamic memory allocation purpose).

I know RSA key size & clear text length.

I also want to know the limitation on input clear text length.

Any idea?

解决方案RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M)

Input:

(n, e) recipient's RSA public key (k denotes the length in octets

of the modulus n)

M message to be encrypted, an octet string of length mLen,

where mLen <= k - 11

So the input depends on the key size. k is that key size but in octets. So for a 1024 bit key you have 1024 / 8 - 11 = 117 bytes as maximum plain text.

Note that above is the maximum size for RSA with PKCS#1 v1.5 padding. For the newer OAEP padding the following can be found in chapter 7.1:

RSAES-OAEP-ENCRYPT ((n, e), M, L)

...

Input:

(n, e) recipient's RSA public key (k denotes the length in octets

of the RSA modulus n)

M message to be encrypted, an octet string of length mLen,

where mLen <= k - 2hLen - 2

L optional label to be associated with the message; the

default value for L, if L is not provided, is the empty

string

Where hLen is the output size of the hash function used for the mask generation function. If the default SHA-1 hash function is used then the maximum size of the message is k - 42 (as the output size of SHA-1 is 20 bytes, and 2 * 20 + 2 = 42).

Normally a randomly generated secret key is encrypted instead of the message. Then the message is encrypted with that secret key. This allows almost infinitely long messages, and symmetric crypto - such as AES in CBC mode - is much faster than asymmetric crypto. This combination is called hybrid encryption.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值