Ssl RSA中的消息长度限制

Ssl RSA中的消息长度限制,ssl,rsa,Ssl,Rsa,在RSA中,消息长度不应超过(keysize/8)字节。为何会有这样的限制?输入(比如“abcde”)在输入RSA算法之前转换成什么?它在哪里考虑了输入字符串“abcde”的大小?RSA算法基本上是: Ciphertext = (Plaintext e) mod n 密文=(明文e)模n 以及解密: Plaintext = (Ciphertext d) mod n 明文=(密文d)模n e和n共同构成您的公钥,d和n构成您的私钥e通常是几个常见值中的一个,例如65537,n是两个大素数p和q的乘

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

RSA算法基本上是:

Ciphertext = (Plaintext e) mod n 密文=(明文e)模n 以及解密:

Plaintext = (Ciphertext d) mod n 明文=(密文d)模n
e
n
共同构成您的公钥,
d
n
构成您的私钥
e
通常是几个常见值中的一个,例如65537,
n
是两个大素数
p
q
的乘积,这两个大素数应该是您唯一的,并定义密钥长度(例如1024位)。用于解密密文的
d
值使用
e
p
q
计算。如果您感兴趣,维基百科会提供更多详细信息:。在RSA算法中使用时,明文基本上被视为一个大整数

如果你不熟悉模运算符,它基本上就是左边除以右边的余数。例如,
17 mod 5=2
,因为5正好将17除以三次(
3*5=15
),剩下的是:
17-15=2

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


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

RSA算法基本上是:

Ciphertext = (Plaintext e) mod n 密文=(明文e)模n 以及解密:

Plaintext = (Ciphertext d) mod n 明文=(密文d)模n
e
n
共同构成您的公钥,
d
n
构成您的私钥
e
通常是几个常见值中的一个,例如65537,
n
是两个大素数
p
q
的乘积,这两个大素数应该是您唯一的,并定义密钥长度(例如1024位)。用于解密密文的
d
值使用
e
p
q
计算。如果您感兴趣,维基百科会提供更多详细信息:。在RSA算法中使用时,明文基本上被视为一个大整数

如果你不熟悉模运算符,它基本上就是左边除以右边的余数。例如,
17 mod 5=2
,因为5正好将17除以三次(
3*5=15
),剩下的是:
17-15=2

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


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

我想你没有明白我的问题。我的问题是,如果有一个输入字符串“abcde”我想用公钥加密,那该怎么做呢。“ancde”将被转换成什么?它将被转换成一个数字。如何做到这一点取决于“ancde”代表什么。(例如,大写字母合法吗?数字合法吗?标点符号合法吗?)。例如,如果您愿意,您可以用“01”表示“a”,用“02”表示“b”,等等,并用十进制表示。你可以在二进制中使用8位ASCII。@David Schwartz:那么你的意思是“abcde”可以转换成这样的东西:“0102030405”,而这就是公钥的幂,即密文?当然,如果你想这样做,你可以这样做。如果你想用别的方法,你可以用别的方法。只要双方同意,RSA就不在乎。它的工作原理是一样的。(但是,请理解,并不是所有的方法都会产生一个安全的密码系统。事实上,有!)。例如,DES。您必须将其构建到加密系统中,以加密更大的数据块或数据流。通常,AES与填充一起用于加密对称密码的密钥,对称密码可以加密任意大小的块。(例如流密码或具有链接模式和更多填充)您必须记住,像RSA和DES这样的东西不是密码系统。它们是算法,原语。它们是我们构建完整系统的小部分。我想你没有明白我的问题。我的问题是,如果有一个输入字符串“abcde”我想用公钥加密,那该怎么做呢。“ancde”将被转换成什么?它将被转换成一个数字。如何做到这一点取决于“ancde”代表什么。(例如,大写字母合法吗?数字合法吗?标点符号合法吗?)