gpt4 book ai didi

javascript - 当我在 JavaScript 中计算 1000^1000 时如何避免无穷大的结果

转载 作者:行者123 更新时间:2023-11-30 14:52:47 25 4
gpt4 key购买 nike

我正在尝试制作类似 RSA 的加密程序。因此我需要计算 1069^1099。问题是根据 Javascript,该计算的结果是无穷大。有什么办法可以解决这个问题吗?

var n = 23 * 83;
var e = 87;
var d = 1099;
var m = 1069;
var m = m**d % n; //Result NaN because m**d = infinity

最佳答案

如果您只是在开发不使用大质数的玩具 RSA 密码,那么您可以实现 modular exponentation如下:

function modexp(base, exponent, modulus) {
var result = 1;
while (exponent) {
if (exponent & 1) {
result = (result * base) % modulus;
}
base = (base * base) % modulus;
exponent >>= 1;
}
return result;
}

维基百科的文章有详细的描述,但基本上是把xe拆成x的乘积e 的二进制表示中每个设置位对应的数字。例如,x13 == x8 × x4 × x1(因为 1310 == 11012)。这可以通过在每一步对 x 进行平方并在每次计算后应用模数来有效计算,这样数字就不会变得太大。

正如其他人所说,您需要一个 big number library处理现实世界的 RSA key 。

关于javascript - 当我在 JavaScript 中计算 1000^1000 时如何避免无穷大的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com