0

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

4

1 回答 1

4

RSA算法本质上是:

密文 = (明文e ) mod n

并解密:

明文 = (密文d ) mod n

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

如果您不熟悉模运算符,它基本上是左侧除以右侧时的余数。例如17 mod 5 = 2,5 正好除以 17 三倍 ( 3 * 5 = 15),余数为:) 17 - 15 = 2

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

为了保证这一点,消息被限制为比n. 由于其中的位数n是密钥大小,因此它必须小于keysize bits, or keysize / 8 bytes(因为一个字节中有 8 位)。

于 2012-04-08T09:25:55.613 回答