Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mpreal moD(mpreal x, mpreal y)//x mod y
- {
- while (x > y)
- x -= y;
- return x;
- }
- mpreal power_x(mpreal g, mpreal k)//g^k
- {
- mpreal r = 1;
- while (k > 0)
- {
- k--;
- r = (r*g);
- }
- return r;
- }
- void signature(ifstream &f, ofstream&of)//подпись
- {
- mpreal::set_default_prec(mpfr::digits2bits(digits));
- mpreal h, p = 982451653, q = 899681;
- Hash(f, of);
- f >> h;
- mpreal pgtyju = random();
- cout << pgtyju << endl;
- mpreal k, Y, r, s, g,y= 9824516, x = 89968;
- cout << "Enter k from 1 to "<<q-1 << endl;
- cin >> k;
- g = moD(power_x(y, (p-1)/q),p);
- Y = moD(power_x(g, x), p);
- r = moD(power_x(g, k),p);
- s = moD(r,q) - moD((h*x),q);
- /*if ((power_x(r, moD(r, q))) == (moD(power_x(g, s)*power_x(Y, h), p)))
- cout << " Signature is right" << endl;
- else cout << " Signature is wrong" << endl;*/
- cout << "( " << r << " , " << s << ')' << endl;
Advertisement
Add Comment
Please, Sign In to add comment