Solved

# getting the mod from a double number in C++

Posted on 2008-06-25
1,005 Views
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.
``````
0
Question by:manganzon
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 3

Expert Comment

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

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

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

ID: 31470730
thanks;
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Provide an easy one stop to quickly get the relevant information on common asked question on Ransomware in Expert Exchange.
This paper addresses the security of Sennheiser DECT Contact Center and Office (CC&O) headsets. It describes the DECT security chain comprised of “Pairing”, “Per Call Authentication” and “Encryption”, which are all part of the standard DECT protocol.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
###### Suggested Courses
Course of the Month4 days, 10 hours left to enroll