在 RSA 中,消息长度不应超过 (keysize/8) 个字节。为什么会有这样的限制?输入(比如“abcde”)在输入 RSA 算法之前转换成什么,它在哪里考虑输入字符串“abcde”的大小?
问问题
3606 次
1 回答
4
RSA算法本质上是:
密文 = (明文e ) mod n
并解密:
明文 = (密文d ) mod n
e
和n
一起组成你的公钥, 和d
组成n
你的私钥。e
通常是几个常见值之一,例如 65537,n
是两个大素数的乘积,p
对q
您来说应该是唯一的,并且定义了密钥长度(例如 1024 位)。用于解密密文的值d
是使用和计算e
的。如果您有兴趣,维基百科有更多详细信息:http://en.wikipedia.org/wiki/RSA_(algorithm)。在 RSA 算法中使用时,您的明文基本上被视为一个大整数。p
q
如果您不熟悉模运算符,它基本上是左侧除以右侧时的余数。例如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 回答