P
Protoman
I'm trying to write an encryption program, and it doesn't produce the
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:
namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'},
{'W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q'},
{'E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W'},
{'R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E'},
{'T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R'},
{'Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T'},
{'U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y'},
{'I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U'},
{'O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I'},
{'P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O'},
{'A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P'},
{'S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A'},
{'D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S'},
{'F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D'},
{'G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F'},
{'H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G'},
{'J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H'},
{'K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J'},
{'L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K'},
{'Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L'},
{'X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z'},
{'C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X'},
{'V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C'},
{'B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V'},
{'N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B'},
{'M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N'},
};
void convert(string& String)
{
for(int i=0;i<String.length();i++)
String=(toupper(String));
}
string encrypt(const string& cleartext,const string& key)
{
string encrypted;
for(int i=0;i<cleartext.length();i++)
encrypted+=vTable[cleartext-'A'][key[i%key.length()]-'A'];
return encrypted;
}
string decrypt(const string& ciphertext,const string& key)
{
string decrypted;
for(int i=0;i<ciphertext.length();i++)
decrypted+=vTable[key[i%key.length()]-'A'][ciphertext-'A'];
return decrypted;
}
}
int main()
{
try
{
string cleartext;
string key;
cout << "Enter cleartext: ";
getline(cin,cleartext,'\n');
cout << "Enter key: ";
getline(cin,key,'\n');
convert(cleartext);
convert(key);
encrypt(cleartext,key);
cout << "Ciphertext: " << encrypt(cleartext,key)<< endl;
system("PAUSE");
return EXIT_SUCCESS;
}
catch(std::exception const& x)
{
std::cerr << "!" << x.what() << std::endl;
return EXIT_FAILURE;
}
}
Any idea as what might be wrong? Thanks!!!
right output; "GOOGLE" encrypted w/"GOOGLE" IS NOT "ee".
Here's the code:
namespace
{
const char vTable[26][27]=
{
{'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'},
{'W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q'},
{'E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W'},
{'R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E'},
{'T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R'},
{'Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T'},
{'U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y'},
{'I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U'},
{'O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I'},
{'P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O'},
{'A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P'},
{'S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A'},
{'D','F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S'},
{'F','G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D'},
{'G','H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F'},
{'H','J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G'},
{'J','K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H'},
{'K','L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J'},
{'L','Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K'},
{'Z','X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L'},
{'X','C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z'},
{'C','V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X'},
{'V','B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C'},
{'B','N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V'},
{'N','M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B'},
{'M','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N'},
};
void convert(string& String)
{
for(int i=0;i<String.length();i++)
String=(toupper(String));
}
string encrypt(const string& cleartext,const string& key)
{
string encrypted;
for(int i=0;i<cleartext.length();i++)
encrypted+=vTable[cleartext-'A'][key[i%key.length()]-'A'];
return encrypted;
}
string decrypt(const string& ciphertext,const string& key)
{
string decrypted;
for(int i=0;i<ciphertext.length();i++)
decrypted+=vTable[key[i%key.length()]-'A'][ciphertext-'A'];
return decrypted;
}
}
int main()
{
try
{
string cleartext;
string key;
cout << "Enter cleartext: ";
getline(cin,cleartext,'\n');
cout << "Enter key: ";
getline(cin,key,'\n');
convert(cleartext);
convert(key);
encrypt(cleartext,key);
cout << "Ciphertext: " << encrypt(cleartext,key)<< endl;
system("PAUSE");
return EXIT_SUCCESS;
}
catch(std::exception const& x)
{
std::cerr << "!" << x.what() << std::endl;
return EXIT_FAILURE;
}
}
Any idea as what might be wrong? Thanks!!!