Hi all, i am stuck in one euqation in cpp code, please help me to solve it,,
I am using,
Qt 4.8.7
Compiler MinGW32
(checked with boost library boost 1.70)
I want to use below equation in one of the code
A = g^a mod p; //g raise to a modulus p. (something like 2^5 % 3) = 32%3 = 2
(This equation looks like Diffie Hellman algorithm for security)
Where,
^(power)
g is fixed number 0x05
a is 128bit(16bytes) randomely generated number,
and p is fixed hex number of 128bit(16bytes) = (0xD4A283974897234CE908B3478387A3).
I am using Qt 4.8.7
with MinGW32 bit compiler,
I know this operation seems way to long(it is supposed to take some time), but this is requirement
from client, can`t be changed,
So does any one of you have any idea how to tackle this proble, then please let me know.
Thank you in advance.
What I have tried:
Solution i found which didn`t worked for me are listed below:
I got to know,
1 one can use __int128 but to support that one should have used
latest gcc compiler or MinGW64 bit compiler, neither of that i am using now.
2 I found one latest version of Qt has QSslDiffieHellmanParameters class,
but again not supported in our Qt version.
3 I found some libraries like boost/multiprecision/cpp_int.hpp (boost 1.70))
that does have data type such as int128_t and int256_t, but due to
our compiler isssue or something else, we are not able to store
128bit number, meaning
if i do,
int128_t ptval128 = 0xAB1232423243434343BAE3453345E34B;
cout << "ptval128 = " << std::hex << ptval128 << endl;
4 I tried using Bigint which much more useful, but again
5^(128bit number) is way too big, it takes hours to compute things,
(I waited till 1 hour and 16 mins and kill the application).