当前位置: 首页 > 知识库问答 >
问题:

获取IllegalBlocksizeException:使用rsa时数据不能超过256字节

宇文弘懿
2023-03-14

我使用rsa密钥加密一个长字符串,并将它发送到我的服务器(将使用服务器的公钥和私钥加密它),但它会引发类似javax.crypto.IllegalBlocksizeException的异常:数据不能超过256字节我觉得到目前为止我还没有正确理解rsa的工作方式(使用内置库是造成这种情况的原因)。
有人能解释为什么会引发此异常吗?难道根本不可能发送加密的长字符串吗?

共有1个答案

燕文昌
2023-03-14

RSA算法只能加密具有RSA密钥长度的最大字节长度的数据,其比特数为8减11填充字节,即最大字节数=密钥长度的比特数/8-11。

因此,基本情况下,您将键长除以8-11(如果您有填充)。例如,如果您有一个2048bit的密钥,您可以加密2048/8=256字节(如果有填充,则为-11字节)。因此,要么使用更大的密钥,要么使用对称密钥加密数据,并使用rsa加密该密钥(这是推荐的方法)。

这将要求您:

  1. 生成对称密钥
  2. 使用对称密钥加密数据
  3. 使用RSA加密对称密钥
  4. 发送加密密钥和数据
  5. 用rsa解密加密的对称密钥
  6. 使用对称密钥解密数据
  7. 完成:)
 类似资料:
  • 我正在用RSA私钥加密我的对称密钥(AES),并用我的公钥解密它。 但是,当我加密数据时,字节长度是16字节,然而,当我解密数据时,它抛出了受影响的错误,解密时字节数据的长度是344。

  • 问题内容: 我正在使用rsa密钥对要发送到服务器的长字符串进行加密(将使用服务器的公钥和我的私钥对它进行加密),但是它抛出一个异常,就像 我觉得到目前为止我还不了解rsa的工作原理一样(使用内置库是造成这种情况的原因)。 可以请一个人解释为什么抛出此异常。根本不可能发送加密的长字符串吗? 问题答案: RSA算法只能加密具有以字节为单位的RSA密钥长度的最大字节长度除以8减去11的填充字节的数据,即

  • 我写了一个小聊天和消息对象像 发送到服务器,服务器将其传播给所有注册用户。我想加密message对象看起来像的plaintextmessage部分 我已经在服务器和客户端上构建了我的RSA密钥对。 然后我将服务器公钥编码为字节数组,将此数组编码为Base64编码的字符串,并将其发送给客户端。 客户端和服务器都实现了这些功能 当我试图在客户端加密一条消息,将其发送到服务器并在那里解密时,我得到了错误

  • 问题内容: 我正在尝试使用javax.smartcardio 读取智能卡(德语Gesundheitskarte) 在EF“ PD” 的定义中,其长度指定为850字节。内容应该是一个gzip压缩的ISO5589-15编码的XML字符串作为指定在这里 作为CommandAPDU,我发送 获取前256个字节。发送后 我得到下一个256个字节。 但是我如何得到其余的呢? 我怎么知道二进制数据何时结束? 德

  • 我创建了以下方法 用于加密 我有很长的xml字符串,使用这两种方法如下 但它给了我数据不得超过256字节时使用rsa 证书被客户端切分,表示签名算法sha256RS。