GitXplorerGitXplorer
Y

QuadraticSieveFactorization

public
4 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
ef46d91cdef42163c34783bc8f8049f5e96d80af

update

YYaffle committed 2 months ago
Unverified
85788fac774dc9c9954fbb707b66fba9e424f7b0

fixes for small values

YYaffle committed 7 months ago
Unverified
12e11400d0f808f008f8991895de14c6ecc7c31c

update package.json

YYaffle committed 8 months ago
Unverified
24f0c6f58e229f1930506caab39413e2ed446c5b

update libs/isPrime.js

YYaffle committed 8 months ago
Unverified
082c0bcae43256441babb715af6ad2efe4fc57a0

update version

YYaffle committed 8 months ago
Unverified
e60d08fdd4d995b1a120beee77dc2e99415be864

move isPrime.js, isProbablyPrime64.js and PollardsRho64.js to libs

YYaffle committed 8 months ago

README

The README file for this repository.

QuadraticSieveFactorization

Integer factorization using Quadratic Sieve algorithm in JavaScript. The variant is multipolynomial self-initializing with two large-primes.

There is series of videos explaining the algorithm at https://www.youtube.com/playlist?list=PL0OUqr2O9PxLd35SgBiWIxuLgm7mYksfp . Useful info can also be found at https://www.rieselprime.de/ziki/Self-initializing_quadratic_sieve and at https://www.enseignement.polytechnique.fr/informatique/INF558/TD/td_5/S0025-5718-1987-0866119-8.pdf .

See other links in the code.

Example

import factorize from './QuadraticSieveFactorization.js';
console.time();
const f = factorize(2n**128n + 1n);
console.timeEnd();
// ~50ms
console.assert(f === 5704689200685129054721n || f === 59649589127497217n, f);

Usage notes:

  • Do not call for the prime numbers. It may hang for them. Check if the number is prime instead.
  • Do not call for the perfect powers. it may hang for them. Check if the number is a perfect power instead.
  • Do not call for the numbers with a small factor, it is as slow as for semiprimes with similar factor size for them. Try other algorithms to check for small factors instead.
  • The returned value is a some factor, not necessary prime.

See https://www.rieselprime.de/ziki/Factorization for the more detailed usage notes.

Demo

See demo.

Performance

The code uses only single thread. It takes approximately 1.5 hours to factor RSA-100 and 13.5 hours to factor RSA-110 on Core i7-1165G7

Probably larger numbers will cause lack of memory.