DilyaraL

Untitled

May 19th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. mpreal moD(mpreal x, mpreal y)//x mod y
  2. {
  3. while (x > y)
  4. x -= y;
  5. return x;
  6. }
  7.  
  8. mpreal power_x(mpreal g, mpreal k)//g^k
  9. {
  10. mpreal r = 1;
  11. while (k > 0)
  12. {
  13. k--;
  14. r = (r*g);
  15. }
  16. return r;
  17. }
  18.  
  19. void signature(ifstream &f, ofstream&of)//подпись
  20. {
  21. mpreal::set_default_prec(mpfr::digits2bits(digits));
  22. mpreal h, p = 982451653, q = 899681;
  23. Hash(f, of);
  24. f >> h;
  25. mpreal pgtyju = random();
  26. cout << pgtyju << endl;
  27. mpreal k, Y, r, s, g,y= 9824516, x = 89968;
  28. cout << "Enter k from 1 to "<<q-1 << endl;
  29. cin >> k;
  30. g = moD(power_x(y, (p-1)/q),p);
  31. Y = moD(power_x(g, x), p);
  32. r = moD(power_x(g, k),p);
  33. s = moD(r,q) - moD((h*x),q);
  34. /*if ((power_x(r, moD(r, q))) == (moD(power_x(g, s)*power_x(Y, h), p)))
  35. cout << " Signature is right" << endl;
  36. else cout << " Signature is wrong" << endl;*/
  37. cout << "( " << r << " , " << s << ')' << endl;
Advertisement
Add Comment
Please, Sign In to add comment