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