AdamWhiteHat / GNFS

A complete, proof-of-concept, C# implementation of the General Number Field Sieve algorithm for factoring very large semi-prime numbers. The focus was on readability and understandability of the code, not performance.
GNU General Public License v3.0
56 stars 13 forks source link

What mean Smoothness Bound #7

Closed SlimRG closed 4 years ago

SlimRG commented 4 years ago

Can you give more info about variables! Thanks!

AdamWhiteHat commented 4 years ago

Good question. Ill probably include these as tool-tips in the GUI in the next day or two.

I hope this helps. If you have any more follow up questions, just ask.

N

This is the number to factor. It should be a semi-prime. Also called the modulus in an RSA key (despite it not actually being a modulus in the mathematical sense).

Smoothness Bound

Polynomial base

This is the X in the following polynomial: 1X^3 + 15X^2 + 29X^1 + 8X^0

Polynomial degree

The maximum exponent of a polynomial. For the polynomial: 1X^3 + 15X^2 + 29X^1 + 8X^0, the degree is 3.

Relation quantity

The number of relations to find before attempting the matrix step.

Relation value range

This defines a number, call it A, defines a range from -A to +A in the relation equation: A + B*X

AdamWhiteHat commented 4 years ago

I understand that this application is not very user friendly. It requires someone who understands the General Number Field Sieve algorithm.

For me to explain where the polynomial comes from and what it is for is to repeat whats already in the literature.

Check out the .PDF files that are in the root directory of the master branch of this project. Any one of the PDFs should cover the algorithm in depth; just choose the one that is easiest for you to read.

BUT... Before you learn the GNFS algorithm, you should learn the quadratic sieve first.

The Quadratic Sieve is identical to the GNFS, except for the very very last step, the "square root" step.

See Wikipedia's article on the Quadratic Sieve for a 1000-ft view of the algorithm.

To understand the "square root" step of the GNFS, you need to understand abstract algebra.

Note: I had to read several of these PDFs before I "got it", so don't get discouraged--its quite advanced. Again, to understand the full algo. you need to know abstract algebra. I'd recommend learning the Quadradic Sieve first.