C++ Write a program for the viginere cipher that decrypts a large cipher text, s
ID: 3838244 • Letter: C
Question
C++
Write a program for the viginere cipher that decrypts a large cipher text, such as
W H q W V V R H M U S G J G T H K I H T S S E J C H L S F C B G W C R L R Y Q T F S V G A H W KCUHWAUGLQHNSLRLJSHBLTSPISPRDXLJSVEEGHLQWKASSKUWE PWqTWVSPGOELKCQYFNSVWLJSNiqKGNRGYBWLWGOVIOKHKAZKQ KXZGYHCECMEIUJOQKWFWVEFqHKIJRCLRLKBIENQFRJLJSDHGR HLSFQTWLAUqRHHDHWLGUSGIKKFLRYVCWVSPGPHLKASSJVOqXE GCVEYCGZMLJCXXLJSVPAIVWIKVRDRYGFRJLJSLVECGVEYGGEI APUUISFPBTG N W W M U C Z R V T W G L R W G U M NCZVILE
with no key inputted, only cipher text.
Thank you
Explanation / Answer
// Note I have used the given text which has been provided
#include <iostream>
#include <string>
using namespace std;
class cryp
{
public:
string k;
cryp(string k) // constructor for the key
{
for (int i = 0; i < k.size(); ++i)
{
if (k[i] >= 'A' && k[i] <= 'Z')
this->k += k[i];
else if (k[i] >= 'a' && k[i] <= 'z')
this->k += k[i] + 'A' - 'a';
}
}
string decrypt(string m) //decrypting the string
{
string ot;
for (int i = 0, j = 0; i < m.length(); ++i)
{
char ch = m[i];
if (ch >= 'a' && ch <= 'z') //checking for the condition
ch += 'A' - 'a';
else if (ch < 'A' || ch > 'Z')
continue;
ot += (ch - k[j] + 26) % 26 + 'A';
j = (j + 1) % k.length();
}
return ot;
}
};
int main()
{
cryp obj("VIGENERECIPHER"); //passing the string
string original =
"W H q W V V R H M U S G J G T H K I H T S S E J C H L S F C B G W C R L R Y Q T F S V G A H W KCUHWAUGLQHNSLRLJSHBLTSPISPRDXLJSVEEGHLQWKASSKUWE PWqTWVSPGOELKCQYFNSVWLJSNiqKGNRGYBWLWGOVIOKHKAZKQ KXZGYHCECMEIUJOQKWFWVEFqHKIJRCLRLKBIENQFRJLJSDHGR HLSFQTWLAUqRHHDHWLGUSGIKKFLRYVCWVSPGPHLKASSJVOqXE GCVEYCGZMLJCXXLJSVPAIVWIKVRDRYGFRJLJSLVECGVEYGGEI APUUISFPBTG N W W M U C Z R V T W G L R W G U M NCZVILE";
string res = obj.decrypt(original); //calling the decrypt function
cout << "Decrypted Tex: " << res << endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.