Implementation of Null Cipher in C++
In this tutorial, we will learn how to implement NULL Cipher using C++.
In null cipher, ‘null’ stands for ‘nothing’ and ‘cipher’ stands for ‘code’. Basically, it is a code in which most of the letters mean nothing at all because they are just there to hide the real ones.
C++ program for encryption using Null Cipher
Basically in this type of encryption technique, we mix the original word with lots of unwanted letters thus making it difficult to understand.
Example:
Input -> Code Speedy After mixing the input with random cipher materials we get, Output -> oCJozX OoGbUA NdCNfe qejjaN mSyNfM OpOGnJ peWERd UeYFTJ edpPfA NySYqN This way our message gets encrypted and if we want to decrypt the message just take the second alphabet from each word.
Now, let’s see how it is implemented.
IMPLEMENTATION
Approach:
- Input a string.
- Mixing each character of the string with random alphabets.
- Return the encrypted string.
Code:
#include <bits/stdc++.h>
using namespace std;
//this functions encrypts the string
string encrypt(string s)
{
/*ch is a string which contain both uppercase
and lowercase alphabets beacuse it will be used
to generate randon alphabets for encryption*/
string ch = "";
//Inserting uppercase alphabets in ch
for (int i = 65; i <= 90; i++)
ch += char(i);
//Inserting lowercase alphabets in ch
for (int i = 97; i <= 122; i++)
ch += char(i);
int l = ch.length();
//Encrypted message will be stored in result
string result = "";
//Mixing original string with random alphabets
for (int i = 0; i < s.length(); i++)
{
if (s[i] != ' ')
{
for (int j = 0; j < 6; j++)
{
/*only second alphabet from each word is valid
in result sring while rest of the alphabets are
random(for encryption)*/
if (j == 1)
result += s[i];
else
result += ch[rand() % l];
}
result += ' ';
}
}
return result;
}
int main()
{
srand(time(NULL));
string s;
cout << "Enter message: ";
getline(cin, s);
cout << "Encrypted Message: ";
cout << encrypt(s);
return 0;
}Input/Output:
Enter message: Code Speedy
Encrypted Message: KCeqPP ZoLKcv ydCKlF RexhfC jSlUPX OpgHPs HesnpL
HeqIRy tdYkfy NyzUzPEach word in the encrypted message contains a letter from the original message.
If we look closely we can see that by taking the second character from each word of the encrypted message, we can get the original message.
Also read: C++ Program to Encrypt and Decrypt a String
Leave a Reply