lab11

 #include <iostream>

#include <cmath>

using namespace std;

long long modExp(long long b, long long e, long long m) {

long long r = 1;

while (e > 0) {

if (e % 2 == 1)

r = (r * b) % m;

b = (b * b) % m;

e /= 2;

}

return r;

int main() {

long long p, g, a, b, A, B, sA, sB;

cout << "Enter a prime number (p): ";

cin >> p;

cout << "Enter a primi ve root (g): ";

cin >> g;

cout << "User A, enter your private key (a): ";

cin >> a;

cout << "User B, enter your private key (b): ";

cin >> b;

A = modExp(g, a, p);

B = modExp(g, b, p);

cout << "Public Key formula: (g^Private Key) % p\n";

cout << "User A's public key = (" << g << "^" << a << ") % " << p << " = " << A << endl;

cout << "User B's public key = (" << g << "^" << b << ") % " << p << " = " << B << endl;

sA = modExp(B, a, p);

sB = modExp(A, b, p);

cout << "Shared Secret Key formula: (Received Public Key ^ Private Key) % p\n";

cout << "User A's shared secret key = (" << B << "^" << a << ") % " << p << " = " << sA << endl;

cout << "User B's shared secret key = (" << A << "^" << b << ") % " << p << " = " << sB << endl;

if (sA == sB) {

cout << "Key exchange successful! Shared secret key: " << sA << endl;

} else {

cout << "Error in key exchange!" << endl;

}

return 0;

}

Comments

Popular posts from this blog

lab1

lab8

lab9