在 RSA 中,消息长度不应超过 (keysize/8) 字节。为什么会有这样的限制呢?输入(例如“abcde”)在输入 RSA 算法之前转换成什么?它在哪里考虑输入字符串“abcde”的大小?
RSA算法本质上是:
密文 = (明文e ) mod n
并解密:
明文 = (密文d ) mod n
e和n一起组成你的公钥, 和d并n组成你的私钥。e通常是几个常见值之一,例如 65537,n是两个大素数的乘积p,并且q对您来说应该是唯一的,并定义密钥长度(例如 1024 位)。d用于解密密文的 值是使用e、p和计算得出的q。如果您有兴趣,维基百科有更多详细信息: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。由于 in 的位数n是密钥大小,因此它必须少于keysize bits, 或keysize / 8 bytes(因为一个字节中有 8 位)。
| 归档时间: |
|
| 查看次数: |
4619 次 |
| 最近记录: |