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
相关产品推荐
相关产品推荐

