我使用rsa密钥加密一个长字符串,并将它发送到我的服务器(将使用服务器的公钥和私钥加密它),但它会引发类似javax.crypto.IllegalBlocksizeException的异常:数据不能超过256字节
我觉得到目前为止我还没有正确理解rsa的工作方式(使用内置库是造成这种情况的原因)。
有人能解释为什么会引发此异常吗?难道根本不可能发送加密的长字符串吗?
RSA算法只能加密具有RSA密钥长度的最大字节长度的数据,其比特数为8减11填充字节,即最大字节数=密钥长度的比特数/8-11。
因此,基本情况下,您将键长除以8-11(如果您有填充)。例如,如果您有一个2048bit的密钥,您可以加密2048/8=256字节(如果有填充,则为-11字节)。因此,要么使用更大的密钥,要么使用对称密钥加密数据,并使用rsa加密该密钥(这是推荐的方法)。
这将要求您: