You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中RSA结合对称密钥加解密文件时出现BadPaddingException问题

BadPaddingException: Decryption error 问题排查与解决

核心问题:RSA密钥对不匹配

你的代码中两次调用generateKeyPair()生成RSA密钥,这会创建两组完全独立的密钥对:用第二组的公钥加密AES密钥,却用第一组的私钥去解密,自然无法得到正确的AES密钥。后续用错误的AES密钥解密文件,就会抛出BadPaddingException。

错误代码片段:

// 错误:生成了两个独立的密钥对
PrivateKey privateKey = generateKeyPair().getPrivate();
PublicKey publicKey = generateKeyPair().getPublic();

解决方法

只生成一次RSA密钥对,从中分别提取公钥和私钥:

// 正确:生成一组密钥对,复用公钥和私钥
KeyPair keyPair = generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();

额外注意事项

  • 实际项目中,加密后的IV需要和密文一起存储(比如写入文件头部),不能只依赖内存中的变量,否则重启程序后无法解密。
  • 解密时避免直接覆盖原文件,建议先写入临时文件验证成功后再替换,防止数据丢失。

内容的提问来源于stack exchange,提问作者darkman106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:26:05