write the C++ or java code for this vigenere cipher
The language of the plaintext employs a 32 character alphabet:
a á b d ð e é f g h i í j k l m n o ó p r s t u ú v x y ý þ æ ö
The (approximate) frequencies of these letters in the (much larger)
work from which the plaintext was
culled is:
r -9.81% a – 9.14% n- 8.26% i- 8.00% e- 6.16% t- 5.90%
s- 4.76% l- 4.75% k- 4.35% u- 3.66% m- 3.40% ð-3.13% g- 3.08% þ- 2.91% f-2.88% o -2.63%
h -2.47% v- 2.46% á- 2.15% d-1.48% ó- 1.43% í-1.26% b- 0.96% j -0.96%
ö- 0.89% y- 0.76% p -0.62% æ- 0.59% é- 0.53% ú-0.48% ý- 0.10% x- 0.04%
Break the following cipher and recover the plaintext:
ýivéöfxþspiýötxðgæhekilærlðuipiiaþigpirðlbgmlmrúvpæapaxýaoöttmrblþvötjfjabýtaivxöékójmggsggpxtóvöáoýéérvúóáóðímýuþoúiddrmérbéödrábáyyþrþbehójyuóáírójöiyípæapaxýajvteýæásóihipggátóéyiiúííhgyaxðúlðhéææýíðdúiyæþðæggmyóýuþvéþkúbíðvbídánsíyéarabíbáójðíiíövétdrhárgbtiæivípxúyæýaxsuipignoyæsðvvykrfjísúíkógðtmáíphpíaúyöfðhfdfmúiæéeýæíyaréðaóinðraðaæhúffgtmmbagðþeaúbsyiatyuráxréeoxustvétpíþörðséaxýíovtthbháoréyxithoæfjtaíxóötaiiiííbépaxýrbæáiaxðkbgtaía
Expert Answer
Source Code:
#include <iostream>
#include <string>
using namespace std;
class VigenereMethod
{
public:
string vigenerekey;
VigenereMethod(string vigenerekey)
{
for (int i = 0; i < vigenerekey.size(); ++i)
{
if (vigenerekey[i] >= ‘A’ && vigenerekey[i] <= ‘Z’)
this->vigenerekey += vigenerekey[i];
else if (vigenerekey[i] >= ‘a’ && vigenerekey[i] <= ‘z’)
this->vigenerekey += vigenerekey[i] + ‘A’ – ‘a’;
}
}
string decryptMessage(string encryptedtext)
{
string out;
for (int i = 0, j = 0; i < encryptedtext.length(); ++i) // finding the length of the encrypted message and converting to decrypted message
{
char c = encryptedtext[i];
if (c >= ‘a’ && c <= ‘z’)
c += ‘A’ – ‘a’;
else if (c < ‘A’ || c > ‘Z’)
continue;
out += (c – vigenerekey[j] + 26) % 26 + ‘A’;
j = (j + 1) % vigenerekey.length();
}
return out;
}
};
int main()
{
VigenereMethod cipher(“VIGENERECIPHER”); // Assigning the vegenere key
// Assigning the encrypted message
string encrypted=”ýivéöfxþspiýötxðgæhekilærlðuipiiaþigpirðlbgmlmrúvpæapaxýaoöttmrblþvötjfjabýtaivxöékójmggsggpxtóvöáoýéérvúóáóðímýuþoúiddrmérbéödrábáyyþrþbehójyuóáírójöiyípæapaxýajvteýæásóihipggátóéyiiúííhgyaxðúlðhéææýíðdúiyæþðæggmyóýuþvéþkúbíðvbídánsíyéarabíbáójðíiíövétdrhárgbtiæivípxúyæýaxsuipignoyæsðvvykrfjísúíkógðtmáíphpíaúyöfðhfdfmúiæéeýæíyaréðaóinðraðaæhúffgtmmbagðþeaúbsyiatyuráxréeoxustvétpíþörðséaxýíovtthbháoréyxithoæfjtaíxóötaiiiííbépaxýrbæáiaxðkbgtaíae”;
// Storing the decrypted message
string decrypted = cipher.decryptMessage(encrypted);
// Displaying the encrypted message
cout << “Encrypted Message is: ” << encrypted << endl;
// Displaying the decrypted message
cout << “Decrypted Message is: ” << decrypted << endl;
}
Output:
Encrypted Message is: ýivéöfxþspiýötxðgæhekilærlðuipiiaþigpirðlbgmlmrúvpæapaxýaoöttmrblþvötjfjabýtaivxöékójmggsggpxtóvöáoýéérvúóáóðímýuþoúiddrmérbéödrábáyyþrþbehójyuóáírójöiyípæapaxýajvteýæásóihipggátóéyiiúííhgyaxðúlðhéææýíðdúiyæþðæggmyóýuþvéþkúbíðvbídánsíyéarabíbáójðíiíövétdrhárgbtiæivípxúyæýaxsuipignoyæsðvvykrfjísúíkógðtmáíphpíaúyöfðhfdfmúiæéeýæíyaréðaóinðraðaæhúffgtmmbagðþeaúbsyiatyuráxréeoxustvétpíþörðséaxýíovtthbháoréyxithoæfjtaíxóötaiiiííbépaxýrbæáiaxðkbgtaíae
Decrypted Message is: NNZTFLRPVYSXGRQJFQVLREYARIEAQTAIYIARNSATTJTLNIEXURRBQCWKYSCRKGSIEYDZCYCLPKERVQMAOWNVWTXNOUHNZWSCUDWBCUCWYWVSUOPNXABECCPPWATACHFPFDQEHCEEJNRTGNVZAOHWPSMUFRALXNUNPXRATOLGDSROHEYEEFZROEAQENSFBGELXIDYFQZDSZOIGWJTNJNFLWNDOBELXFXJLWUXFURWRQFKTAJGRQFPEPNJDTTXALNDODXNWPTMDXKBNWKPJEGAMIWGWTCWKGKCRSLX