用java中的非常大的指数计算功率

时间:2014-04-21 07:16:40

标签: java pow exponent

我在计算非常大的指数的能力时遇到了问题。即:我输入密码:"abc"然后calculate x=Hash(password)。在那之后,我必须calculate Y = pow(g,x)grandom numbe r。那我该如何计算Y.有什么建议吗?非常感谢你!

3 个答案:

答案 0 :(得分:2)

在密码学c = m^e (mod n)中,c是密文,n是您可以表示的最大值。需要模数运算。

除此之外,对于大数使用取幂Exponentiation by squaringpow操作实现此算法。代码为here

通过预定义的字节数组和字节操作,加密实现要复杂得多。您可以参考this paper's Modular Exponentiation and Roots 部分。

答案 1 :(得分:1)

出于您的目的,您可能需要查看BigInteger.modPow()方法,它与Math.pow()方法相关。

http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html

答案 2 :(得分:0)

问题是10 ^ 100是100位数。如果你的哈希,比方说4亿,结果值会消耗4Gb的内存。所以你的问题在现代硬件上几乎无法解决。

你确定Y是pow(g,x)而不是pow(g,x)mod SOME_VALUE?然后它会更有意义。