RSA中的消息长度限制

时间:2012-04-08 08:56:40

标签: ssl rsa

在RSA中,消息长度不应超过(keysize / 8)字节。为什么会有这样的限制?在将其输入RSA算法之前转换为什么输入(比如说“abcde”)以及它在何处考虑输入字符串“abcde”的大小?

1 个答案:

答案 0 :(得分:3)

RSA算法基本上是:

Ciphertext = (Plaintext e) mod n

并解密:

Plaintext = (Ciphertext d) mod n

en组成了您的公钥,dn组成了您的私钥。 e通常是少数常见值之一,例如65537,n是两个大素数pq的乘积,它们应该是唯一的,并定义密钥长度(例如1024位)。用于解密密文的d值使用epq计算。如果您感兴趣,维基百科有更多细节:http://en.wikipedia.org/wiki/RSA_(algorithm)。在RSA算法中使用时,您的明文基本上被视为一个大整数。

如果你不熟悉模运算符,它基本上是左边被右边划分的余数。例如。 17 mod 5 = 2为5精确划分17次(3 * 5 = 15),留下余下的17 - 15 = 2)。

由于模运算符的定义,a mod b的结果始终小于b。鉴于此,以及解密值是执行mod n操作的结果这一事实意味着当解密时,得到的明文值将始终小于n。因此,为了使您最初加密的实际明文,输入必须小于n

为了保证这一点,消息被限制为具有比n更少的位(“数字”)。由于n中的位数是密钥大小,因此必须小于keysize bitskeysize / 8 bytes(因为一个字节中有8位)。