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

超过512字节的数据的Java IllegalBlockSizeException

冷翼
2023-03-14

我写了一个小聊天和消息对象像

{type="message",sender="userA",content="plaintextmessage",recipient="userB"}

发送到服务器,服务器将其传播给所有注册用户。我想加密message对象看起来像的plaintextmessage部分

{type="message",sender="userA",content="bHJg67&GghjGZuf/zdu=",recipient="userB"}

我已经在服务器和客户端上构建了我的RSA密钥对。

KeyPair keyPair = buildKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

然后我将服务器公钥编码为字节数组,将此数组编码为Base64编码的字符串,并将其发送给客户端。

byte[] encodedPublicKey = publicKey.getEncoded();
String b64PublicKey = Base64.getEncoder().encodeToString(encodedPublicKey);

客户端和服务器都实现了这些功能

public static byte[] encrypt(PublicKey othersPubKey, String message) throws Exception {       
    Cipher cipher = Cipher.getInstance("RSA");  
    cipher.init(Cipher.ENCRYPT_MODE, othersPubKey);  
    return cipher.doFinal(message.getBytes());        
}

public static byte[] decrypt(PrivateKey privateKey, byte [] encrypted) throws Exception {   
    Cipher cipher = Cipher.getInstance("RSA");  
    cipher.init(Cipher.DECRYPT_MODE, privateKey);        
    return cipher.doFinal(encrypted);
}

当我试图在客户端加密一条消息,将其发送到服务器并在那里解密时,我得到了错误

javax.crypto.IllegalBlockSizeException: Data must not be longer than 512 bytes

这是否意味着这种加密方法不适合我的邮件?我发现Java/JCE:解密用RSA加密的“长”消息。这是我的新目标吗?

共有1个答案

金高轩
2023-03-14

是的,它被称为混合密码系统。即便如此,您可能还想了解Bleichenbacher攻击、身份验证加密的使用、如何获得公钥信任等。

因此,您的目标是更详细地研究该领域,或者更少地了解部署TLS 1.2或1.3。因为实现传输模式安全性需要很多细节。

如果你想继续,至少看看OAEP模式下的RSA和GCM模式下的AES。

 类似资料:
  • 我正在用RSA私钥加密我的对称密钥(AES),并用我的公钥解密它。 但是,当我加密数据时,字节长度是16字节,然而,当我解密数据时,它抛出了受影响的错误,解密时字节数据的长度是344。

  • 问题内容: 因此,我正在处理在Websphere 7(JDK 6)上运行的旧servlet代码。开发环境设置使用Tomcat 6(JDK 6)。 为什么它在Websphere 7上而不在Tomcat 6上可以工作? 这与应用程序服务器有关吗? 如果您的回答为“是”,则为“否”。2,除了分解代码或使用动态包含之外,您在Tomcat 6(JDK 6)上是否有解决方法? 该计划与将静态包含更改为动态包含

  • 我正在使用T=0协议中的卡: > 00 C0 00 XX 关于ISO7816-3,我希望该卡能给出以下回应: 如果,我会发送: 以此类推,直到最后我得到了。 然而,这是我实际拥有的(TPDU级别): 我必须反复发送P3=00(256)的GET响应,读取256个字节,并且没有状态字,直到卡警告我实际读取的字节数少于256。 我找不到规范中允许卡“跳过”状态词的部分,或者如何处理超过256字节的答案。

  • 我的问题是,当我上传一个文件超过我在脚本中设置的限制(5 MB)时,它会在网站顶部显示此警告: 警告:第0行未知中32485176字节的POST内容长度超过了20971520字节的限制 例如,在这里,我上传了一个文件超过(30 MB),但当我上传一个文件超过(5 MB),小于30(或没有那么大)它不显示警告,只显示我想要的代码错误: 我正在localhost,这个错误每次都出现,我知道如何通过修改

  • 问题内容: 我们有一个Jenkins-Chef设置程序,其中包含一个针对客户的网站的质量检查构建项目。该构建从Bitbucket获取代码,并且脚本将食谱从Chef Client上载到Chef Server。 这些构建运行了很长时间。两天前,自动构建和手动构建开始失败,并显示以下错误(来自Jenkins控制台输出): 更新环境质量检查 上载example-deployment [0.1.314] 错