楼主: RebeccaW
60 0

RSA私钥解密乱码问题 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-6-18
最后登录
2018-6-18

楼主
RebeccaW 发表于 2025-12-9 15:56:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

背景描述:

在本地环境中使用 IDEA 进行开发时功能正常,但在测试服务器上运行时出现异常。通过开启 IDEA 的远程调试功能,对私钥解密过程进行分析,得到如下结果:

?F:?>~??C?x?,\?!???
?B?I??	?
?P???x??\?P??(??admin@123

从返回结果可以看出,解密后的字符串开头包含大量非预期的乱码字符。

问题排查过程:

经过分析发现,问题源于私钥解密时所使用的 Cipher 实例采用了默认的加密算法配置。具体代码为:

Cipher cipher = Cipher.getInstance("RSA");

该写法未明确指定填充模式(Padding),导致不同运行环境(如本地与服务器)可能因默认安全提供者差异而产生不一致的行为。

解决方案:

显式指定标准的填充方式,确保跨环境一致性。修改代码如下:

cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");

此配置明确使用 RSA 算法、ECB 模式以及 PKCS1Padding 填充方案,并指定 Bouncy Castle 作为安全提供者,可有效避免乱码问题。

建议同时在项目的 pom.xml 中引入必要的依赖以支持 BC 提供者:

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.69</version>
</dependency>
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:RSA instance Adding Castle stance

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-28 17:31