You are here:
  • Increase font size
  • Default font size
  • Decrease font size


Ремонт и настройка диагностических приборов.

Factoring programs

Definition: The RSA is one of the popular public-key encryption algorithms.

Rivest et al published a method for obtaining digital signatures and public-key cryptosystems in 1978. In order to use the method, the encryption and decryption keys must be chosen as follows:

  1. Compute n as the product of two primes p and q: n = p×q. These two primes are very large and randomly selected primes.
  2. Compute f ( n ) = ( p –1)( q – 1).
  3. Select e such that e is relatively prime to f ( n ).
  4. Select d such that e×d = 1 mod ( f ( n )), where mod stands for modular operation.
  5. Choose ( e, n ) as the public key.
  6. Choose ( d, n ) as the private key.

In encryption and decryption, receiver‘s public key ( e R ,n R ) and private key ( d R , n R ) are used. Encryption is carried out by using m e = m e R mod n R , where m is the plaintext and m c is the ciphertext. Decryption is carried out by using m = ( m d R ) dR mod n R .

For authentication, sender‘s public key ( e s , n s ) and private key ( d s , n s ) are used. The signature is generated by using m c = m ds mod n s . The signature is authenticated by using m = ( m e ) e s mod n s .

Integer Factorization Source Code

I wrote this library when I finally managed to understand the ins and outs of factoring large integers using advanced sieving methods (it took years).

Current versions use just about every modern factorization algorithm available. These include GMP-ECM, a very fast implementation of the self-initializing quadratic sieve with one or two large primes, and a complete implementation of the number field sieve. The core code is organized as a library with a lightweight API that allows easy integration with other applications.


Links to factoring programs

For ECM/P-1/P+1:
GMP-ECM (for any CPU that supports GMP)
The ECMNET page:

Java ECM (java applet)