Replace FME with addition chaining from Bruce Schneier
This commit is contained in:
parent
62204634e1
commit
9e184e8aa6
@ -86,26 +86,20 @@ function generate_prime() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// gist.github.com/krzkaczor/0bdba0ee9555659ae5fe
|
function fastModularExponentiation(a, b, n) {
|
||||||
var fastModularExponentiation = function (a, b, n) {
|
let res = 1n;
|
||||||
a = a % n;
|
|
||||||
var result = 1n;
|
|
||||||
var x = a;
|
|
||||||
|
|
||||||
while (b > 0n) {
|
while (b > 0n) {
|
||||||
var leastSignificantBit = b % 2n;
|
if (b % 2n === 1n) {
|
||||||
b >>= 1n;
|
res = (res * a) % n;
|
||||||
|
|
||||||
if (leastSignificantBit === 1n) {
|
|
||||||
result = result * x;
|
|
||||||
result = result % n;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
x = x * x;
|
b >>= 1n;
|
||||||
x = x % n;
|
a = (a * a) % n;
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
};
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
const SMALL_PRIMES = [
|
const SMALL_PRIMES = [
|
||||||
2n,
|
2n,
|
||||||
|
Loading…
Reference in New Issue
Block a user