JAVA多线程 rsa,在Java中为RSA加密存储大量数字

在发布我的代码之前,我认为最好首先安排一些事情 .

Goal:

对几个小数字执行非常基本的RSA加密 . 对于那些熟悉RSA加密的人,我已经发布了下面算法使用的值 .

Current RSA numbers/values:

P = 29

Q = 31

N = P * Q

披=((P-1)*(Q-1))

E = 11

My issue:

当我试图解密我的代码时出现问题 . 加密按设计工作 .

Code:

long[] mesg = new long[]{8, 7, 26, 28};

long[] encrypted_mesg = new long[mesg.length];

for(int i=0; i

encrypted_mesg[i]=(long)((Math.pow(mesg[i],E))%N);

System.out.print(encrypted_mesg[i] + " ");

}

System.out.println();

//Decrpyt (not functioning-long to small, Big Integer not working)

for(int j=0; j

BigInteger decrypt = new BigInteger(Math.pow(encryp_mesg[j],D) + "");

System.out.print(decrypt.toString() + " ");

}

最初的问题是D(私人指数)在作为指数应用时,是长期的方式 . 我做了一个快速的谷歌搜索,并决定尝试实施BigInteger . 当我运行该程序时,它会抛出此错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Infinity"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:580)

at java.math.BigInteger.(BigInteger.java:461)

at java.math.BigInteger.(BigInteger.java:597)

at RSA_Riddles.main(RSA_Riddles.java:23)**

What I have tried to fix the problem:

说实话,我没有尝试任何事情,因为我知道答案不会计算到无限,但BigInteger认为它确实如此 . 无论如何我可以存储130 ^ 611这样的数字吗?如果是这样,怎么样?

Big Question:

如何存储执行解密所需的值?

提前感谢任何试图帮助我的人!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值