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

Java实现RSA解密时BigInteger构造方法报错问题求助

解决RSA解密中的BigInteger构造方法错误

嘿,我来帮你搞定这个报错!先看你代码里的问题根源:

你加密后得到的encrypted_message本身就是BigInteger类型的对象,但解密时你却把它传给了BigInteger的构造方法——可Java的BigInteger压根就没有接受BigInteger作为参数的构造函数,这就是抛出构造方法错误的原因!

修正后的解密代码

直接复用已有的encrypted_message对象就行,完全不需要重新构造:

BigInteger decrypted_message = encrypted_message.modPow(private_key, modulus);

补充:如果加密结果是字符串形式的情况

要是你把加密后的BigInteger转成了字符串来存储或传输(比如存到数据库、通过网络发送),那你需要用接受字符串的构造方法,记得指定基数(通常用十进制10或者十六进制16):

// 假设encrypted_message_str是存储/传输过来的字符串形式密文
BigInteger cipher = new BigInteger(encrypted_message_str, 10);
BigInteger decrypted_message = cipher.modPow(private_key, modulus);

简单总结下:BigInteger是不可变类,只要手里已经有一个BigInteger实例,直接用它就好,别画蛇添足重新构造啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:39