X-Git-Url: http://git.euphorik.ch/?p=crypto_lab3.git;a=blobdiff_plain;f=src%2FRsaStd.cpp;h=114fad0b72ee580b34d386bc75ad15f944c1c7b1;hp=17c234522dc071de3b1d543904c94e0c64a57f78;hb=fb173a9728e915fc7b3f99bc41f55034757105df;hpb=91989c2627abc2cdf511f17169e4f862dc55e838 diff --git a/src/RsaStd.cpp b/src/RsaStd.cpp index 17c2345..114fad0 100644 --- a/src/RsaStd.cpp +++ b/src/RsaStd.cpp @@ -1,5 +1,6 @@ #include "RsaStd.h" +#include using namespace std; #include "Rand.h" @@ -20,21 +21,17 @@ pair RsaStd::generateRSAKeys(uint exponent, uint k kPriv.n = kPub.n = p * q; phi = (p - 1) * (q - 1); + // d = e^-1 (mode phi). } while (mpz_invert(kPriv.d.get_mpz_t(), kPub.e.get_mpz_t(), phi.get_mpz_t()) == 0); // If 'd' is not invertible we try another primes. -// For debugging purpose. -// Utils::print("p", p); -// Utils::print("q", q); -// Utils::print("n", kPub.n); -// Utils::print("phi", phi); -// Utils::print("d", kPriv.d); - return make_pair(kPub, kPriv); } mpz_class RsaStd::sign(const mpz_class& m, const KeyPriv& kPriv) { mpz_class result; + + // m^d (mod n). mpz_powm_sec(result.get_mpz_t(), m.get_mpz_t(), kPriv.d.get_mpz_t(), kPriv.n.get_mpz_t()); return result; }