// ---------------------------------------------------------------------- // // Sample ln3 Program // // Module: rsa_key.cc // Description: Generates an RSA key of size as supplied by user // Date: 2002 // Contributed by: Rene Peralta // // ---------------------------------------------------------------------- #include #include #include #include int main( int argc, char *argv[ ] ) { long key_size; ln p,q,n,phi_n,e,d; while(1) { cout << "size in decimal digits (0 to exit): " ; if( ! ( ( cin >> key_size ) && key_size ) ) return 0; RandomPrime( &p, key_size/2 ); RandomPrime( &q, key_size/2 ); n = p*q; phi_n = (p-1)*(q-1); while(1) { e = ln().Random(key_size)%phi_n; if (GCD(e,phi_n) == 1) break; } d = Inverse(e,phi_n); cout << endl << endl ; cout << "N : " << n << endl;; cout << "e : " << e << endl ; cout << "d : " << d << endl << endl; } return 0; }