#include <iostream>
#include <string>
#include <cmath>
using namespace std;
string RSA(string buf, string alf, int ed, int n)
{
string TC;
for (int j = 0; j < buf.length(); j++)
{
for (int i = 0; i < alf.length(); i++)
{
if(buf[j] == alf[i])
{
cout << i <<" ";
int En = i;
int step = En;
for (int x=2; x<= ed; x++)
step = (step*En)%n;
En = step;
cout << En << endl;
TC += alf[En];
}
}
}
return TC;
}
int main()
{
int p = 3;
int q = 7, e = 5, d = 17;
int n= p*q;
int fi = (p-1)*(q-1);
string alf = "abcdefghijklmnopqrstuvwxyz ";
string buf;
cout << "Vvodi stroku: ";
getline (cin, buf);
cout << buf << endl;
string TC = RSA (buf, alf, e, n);
cout <<"Encrypt -> "<< TC << endl;
string UnTC = RSA (TC, alf, d, n);
cout <<"Decrypt -> "<< UnTC << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgUlNBKHN0cmluZyBidWYsIHN0cmluZyBhbGYsIGludCBlZCwgaW50IG4pCnsKCXN0cmluZyBUQzsKCWZvciAoaW50IGogPSAwOyBqIDwgYnVmLmxlbmd0aCgpOyBqKyspCgl7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhbGYubGVuZ3RoKCk7IGkrKykKCQl7CQoJCQlpZihidWZbal0gPT0gYWxmW2ldKQoJCQl7CgkJCQljb3V0IDw8IGkgPDwiICI7CgkJCQlpbnQgRW4gPSBpOwoJCQkJaW50IHN0ZXAgPSBFbjsKCQkJCWZvciAoaW50IHg9MjsgeDw9IGVkOyB4KyspCgkJCQkJc3RlcCA9IChzdGVwKkVuKSVuOwoJCQkJRW4gPSBzdGVwOwoJCQkJY291dCA8PCBFbiA8PCBlbmRsOwoJCQkJVEMgKz0gYWxmW0VuXTsKCQkJfQoJCX0KCX0KCXJldHVybiBUQzsKfQoKCgppbnQgbWFpbigpCnsKCWludCBwID0gMzsKCWludCBxID0gNywgZSA9IDUsIGQgID0gMTc7CglpbnQgbj0gcCpxOwoJaW50IGZpID0gKHAtMSkqKHEtMSk7CglzdHJpbmcgYWxmID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6ICI7IAoJc3RyaW5nIGJ1ZjsKCWNvdXQgPDwgIlZ2b2RpIHN0cm9rdTogIjsKCQlnZXRsaW5lIChjaW4sIGJ1Zik7CgkJY291dCA8PCBidWYgPDwgZW5kbDsKCQlzdHJpbmcgVEMgPSBSU0EgKGJ1ZiwgYWxmLCBlLCBuKTsKCQljb3V0IDw8IkVuY3J5cHQgLT4gIjw8IFRDIDw8IGVuZGw7CgkJc3RyaW5nIFVuVEMgPSBSU0EgKFRDLCBhbGYsIGQsIG4pOwoJCWNvdXQgPDwiRGVjcnlwdCAtPiAiPDwgVW5UQyA8PCBlbmRsOwoJCgkKCXJldHVybiAwOwp9Cg==