Solved

getting the mod from a double number in C++

Posted on 2008-06-25
4
992 Views
Last Modified: 2010-04-21
Hi, Im trying to do the RSA Algorithm as in this page:
http://pajhome.org.uk/crypt/rsa/rsa.html

but I have a problem with data types (in, double, lon int)

My code is like this:
double p,q,n,m,e,d;

double coded,decoded,msg;
 
 

unsigned int mcd(unsigned int a, unsigned int b){

     return (b == 0)? a : mcd(b, a % b);

}
 

void main(){

  p=7;

  q=9;

  n=p*q;//n for Encryption  and DesEncryption 
 

  m=(p-1)*(q-1);
 

  for(e=2;e<m;e++)//getting e as public key

    if(mcd(m,e)==1)

      break;
 

  for(int x=0;x<m;x++)

  {

    if(fmod((1+x*m),e)==0)

    {

      d=(1+x*m)/e;//getting d as private key

      break;

    }

  }

}

   msg=6;//original message

  //Here I try to Encryp the message

  coded=fmod(pow(mensaje,e),n);//cant use % coz are doubles....

  //coded is 62
 

  //Now I try yo DesEncryp the message

   decoded=fmod(pow(cifrado,d),n);//It is suppose that i must result 6 as msg, but it doesn't. It give me 21.

Open in new window

0
Comment
Question by:manganzon
  • 2
  • 2
4 Comments
 
LVL 3

Expert Comment

by:Darrylsh
ID: 21869429
Why are you using Doubles.  You probably should be using a Big Number library depending on the size of intergers you need, but for learning purposes, you could use a 64 bit int which on most systems would be type long long.
0
 

Author Comment

by:manganzon
ID: 21871922
Im using double coz I need a large rangen and long int is not enough. I need very large numbers like 65^70.

Whats the range of  64bits Int? and how do I declare a variable of it?  and wich library do you mean?
0
 
LVL 3

Accepted Solution

by:
Darrylsh earned 125 total points
ID: 21871943
unsigned a 64 bit integer is 0 to 18,446,744,073,709,551,615
They are declare like:

long long MyVar;

If you need 65^70 you will need a large number library.  I'd recommend GMP which can be found here http://gmplib.org/

Doubles won't work  because of rounding, if you are doing cryptography, you need integers.


0
 

Author Closing Comment

by:manganzon
ID: 31470730
thanks;
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Envision that you are chipping away at another e-business site with a team of pundit developers and designers. Everything seems, by all accounts, to be going easily.
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now