#include <iostream>
#include <string>
using namespace std;
int charToNum (char c)
{
return int(c)-97;
}
int main ()
{
string M="klimov sergei";
cout<<"Original Message: M="<<M<<endl;
int L=M.length();
/*
//Caesar
int csrk=3;
cout<<"Caesar cipher:"<<endl;
cout<<"Key="<<csrk<<endl;
for (int i=0;i<L;i++) {
if (M[i]>=97 && M[i]<=122)
cout<<M[i]<<":"<<"C["<<i<<"]="<<charToNum(M[i])<<"+"<<csrk<<"="<<char(97+(charToNum(M[i])+csrk)%26)<<endl;
else
cout<<M[i]<<":"<<"C["<<i<<"]="<<M[i]<<endl;
}
*/
//Gronsfeld
string grnk="1984";
string grnk2=grnk;
cout<<"Gronsfeld cipher:"<<endl;
cout<<"Key="<<grnk<<endl;
for (int i=grnk2.length();i<M.length();i++)
grnk2[i]=grnk[i%4];
cout<<"Full length key="<<grnk2<<endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgY2hhclRvTnVtIChjaGFyIGMpCnsKICAgIHJldHVybiBpbnQoYyktOTc7Cn0KaW50IG1haW4gKCkKewogICAgc3RyaW5nIE09ImtsaW1vdiBzZXJnZWkiOwogICAgY291dDw8Ik9yaWdpbmFsIE1lc3NhZ2U6IE09Ijw8TTw8ZW5kbDsKICAgIGludCBMPU0ubGVuZ3RoKCk7CiAgICAvKgogICAgLy9DYWVzYXIKICAgIGludCBjc3JrPTM7CiAgICBjb3V0PDwiQ2Flc2FyIGNpcGhlcjoiPDxlbmRsOwogICAgY291dDw8IktleT0iPDxjc3JrPDxlbmRsOwogICAgZm9yIChpbnQgaT0wO2k8TDtpKyspICAgewogICAgICAgIGlmIChNW2ldPj05NyAmJiBNW2ldPD0xMjIpCiAgICAgICAgICAgIGNvdXQ8PE1baV08PCI6Ijw8IkNbIjw8aTw8Il09Ijw8Y2hhclRvTnVtKE1baV0pPDwiKyI8PGNzcms8PCI9Ijw8Y2hhcig5NysoY2hhclRvTnVtKE1baV0pK2NzcmspJTI2KTw8ZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQ8PE1baV08PCI6Ijw8IkNbIjw8aTw8Il09Ijw8TVtpXTw8ZW5kbDsKICAgIH0KICAgICovCiAgICAvL0dyb25zZmVsZAogICAgc3RyaW5nIGdybms9IjE5ODQiOwogICAgc3RyaW5nIGdybmsyPWdybms7CiAgICBjb3V0PDwiR3JvbnNmZWxkIGNpcGhlcjoiPDxlbmRsOwogICAgY291dDw8IktleT0iPDxncm5rPDxlbmRsOwogICAgZm9yIChpbnQgaT1ncm5rMi5sZW5ndGgoKTtpPE0ubGVuZ3RoKCk7aSsrKQogICAgICAgIGdybmsyW2ldPWdybmtbaSU0XTsKICAgIGNvdXQ8PCJGdWxsIGxlbmd0aCBrZXk9Ijw8Z3JuazI8PGVuZGw7CiAgICAKfQ==