Cipher
Never
#include <iostream> #include <cctype> using namespace std; char encryptChar(char ch, int shift) { if (!isalpha(ch)) { return ch; } char base = isupper(ch) ? 'A' : 'a'; ch = (ch - base + shift) % 26 + base; return ch; } string encryptString(const string& str, int shift) { string result; for (char ch : str) { result += encryptChar(ch, shift); } return result; } int main() { string str; int shift; cout << "Enter string to encrypt: "; getline(cin, str); cout << "Enter shift value: "; cin >> shift; string encrypted = encryptString(str, shift); cout << "Encrypted string: " << encrypted << endl; return 0; } #include <iostream> #include <string> using namespace std; string decryptCaesarCipher(string ciphertext, int key) { string plaintext = ""; for (char &c : ciphertext) { if (isalpha(c)) { char shifted = c - key; if (islower(c)) { if (shifted < 'a') { shifted += 26; } } else { if (shifted < 'A') { shifted += 26; } } plaintext += shifted; } else { plaintext += c; } } return plaintext; } int main() { string ciphertext = "vnnc vn jocna cqn cxpj yjach"; for (int key = 0; key < 26; ++key) { string plaintext = decryptCaesarCipher(ciphertext, key); cout << "Key: " << key << ", Plain Text: " << plaintext << endl; } return 0; } //playfair #include <cctype> #include <iostream> #include <string> using namespace std; void createKeySquare(const string &key, char square[5][5]) { int keyIndex = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (keyIndex < key.length()) { char ch = toupper(key[keyIndex]); if (ch == 'J') { ch = 'I'; } square[i][j] = ch; keyIndex++; } else { square[i][j] = 'X' + (i * 5 + j + 1) % 26; } } } } void findPosition(char ch, int &row, int &col, const char square[5][5]) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (toupper(square[i][j]) == toupper(ch)) { row = i; col = j; return; } } } } string encryptPair(char ch1, char ch2, const char square[5][5]) { int row1, row2, col1, col2; findPosition(ch1, row1, col1, square); findPosition(ch2, row2, col2, square); if (row1 == row2) { ch1 = square[row1][(col1 + 1) % 5]; ch2 = square[row2][(col2 + 1) % 5]; } else if (col1 == col2) { ch1 = square[(row1 + 1) % 5][col1]; ch2 = square[(row2 + 1) % 5][col2]; } else { ch1 = square[row1][col2]; ch2 = square[row2][col1]; } return string(1, ch1) + string(1, ch2); } string encrypt(const string &plaintext, const string &key) { char square[5][5]; createKeySquare(key, square); string ciphertext; for (int i = 0; i < plaintext.length(); i += 2) { char ch1 = toupper(plaintext[i]); char ch2 = (i + 1 < plaintext.length()) ? toupper(plaintext[i + 1]) : 'X'; if (ch1 == ch2) { ch2 = 'X'; } ciphertext += encryptPair(ch1, ch2, square); } return ciphertext; } int main() { string plaintext = "hi there"; string key = "playfair"; string ciphertext = encrypt(plaintext, key); cout << "Plaintext: " << plaintext << endl; cout << "Ciphertext: " << ciphertext << endl; return 0; } //vignere #include <cctype> #include <iostream> #include <string> using namespace std; string encrypt(const string &plaintext, const string &key) { string ciphertext; int key_index = 0; for (char ch : plaintext) { if (isalpha(ch)) { char shift = toupper(key[key_index % key.length()]) - 'A'; ch = toupper(ch) + shift; if (ch > 'Z') { ch -= 26; } ch = tolower(ch); } ciphertext += ch; key_index++; } return ciphertext; } std::string decrypt(const string &ciphertext, const string &key) { std::string plaintext; int key_index = 0; for (char ch : ciphertext) { if (isalpha(ch)) { char shift = toupper(key[key_index % key.length()]) - 'A'; ch = toupper(ch) - shift; if (ch < 'A') { ch += 26; } ch = tolower(ch); } plaintext += ch; key_index++; } return plaintext; } int main() { string plaintext = "hello world!"; string key = "secret"; string ciphertext = encrypt(plaintext, key); cout << "Ciphertext: " << ciphertext << endl; string decrypted = decrypt(ciphertext, key); cout << "Plaintext: " << decrypted << endl; return 0; } //hillcipher #include <iostream> using namespace std; void getKeyMatrix(string key, int keyMatrix[][3]) { int k = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { keyMatrix[i][j] = (key[k]) % 65; k++; } } } void encrypt(int cipherMatrix[][1], int keyMatrix[][3], int messageVector[][1]) { int x, i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 1; j++) { cipherMatrix[i][j] = 0; for (x = 0; x < 3; x++) { cipherMatrix[i][j] += keyMatrix[i][x] * messageVector[x][j]; } cipherMatrix[i][j] = cipherMatrix[i][j] % 26; } } } void HillCipher(string message, string key) { int keyMatrix[3][3]; getKeyMatrix(key, keyMatrix); int messageVector[3][1]; for (int i = 0; i < 3; i++) messageVector[i][0] = (message[i]) % 65; int cipherMatrix[3][1]; encrypt(cipherMatrix, keyMatrix, messageVector); string CipherText; for (int i = 0; i < 3; i++) CipherText += cipherMatrix[i][0] + 65; cout << " Ciphertext:" << CipherText; } int main() { string message = "hello world"; string key = "GYBNQKURP"; HillCipher(message, key); return 0; } //des-encrypt // Including dependencies #include <iostream> #include <string> #include <cmath> using namespace std; // Array to hold 16 keys string round_keys[16]; // String to hold the plain text string pt; // Function to convert a number in decimal to binary string convertDecimalToBinary(int decimal) { string binary; while(decimal != 0) { binary = (decimal%2 == 0 ? "0" : "1")+binary; decimal = decimal/2; } while(binary.length() < 4){ binary = "0"+binary; } return binary; } // Function to convert a number in binary to decimal int convertBinaryToDecimal(string binary) { int decimal = 0; int counter = 0; int size = binary.length(); for (int i = size-1; i >= 0; i--) { if(binary[i] == '1'){ decimal += pow(2, counter); } counter++; } return decimal; } // Function to do a circular left shift by 1 string shift_left_once(string key_chunk){ string shifted=""; for(int i = 1; i < 28; i++){ shifted += key_chunk[i]; } shifted += key_chunk[0]; return shifted; } // Function to do a circular left shift by 2 string shift_left_twice(string key_chunk){ string shifted=""; for(int i = 0; i < 2; i++){ for(int j = 1; j < 28; j++){ shifted += key_chunk[j]; } shifted += key_chunk[0]; key_chunk= shifted; shifted =""; } return key_chunk; } // Function to compute xor between two strings string Xor(string a, string b){ string result = ""; int size = b.size(); for(int i = 0; i < size; i++){ if(a[i] != b[i]){ result += "1"; } else{ result += "0"; } } return result; } // Function to generate the 16 keys. void generate_keys(string key){ // The PC1 table int pc1[56] = { 57,49,41,33,25,17,9, 1,58,50,42,34,26,18, 10,2,59,51,43,35,27, 19,11,3,60,52,44,36, 63,55,47,39,31,23,15, 7,62,54,46,38,30,22, 14,6,61,53,45,37,29, 21,13,5,28,20,12,4 }; // The PC2 table int pc2[48] = { 14,17,11,24,1,5, 3,28,15,6,21,10, 23,19,12,4,26,8, 16,7,27,20,13,2, 41,52,31,37,47,55, 30,40,51,45,33,48, 44,49,39,56,34,53, 46,42,50,36,29,32 }; // 1. Compressing the key using the PC1 table string perm_key =""; for(int i = 0; i < 56; i++){ perm_key+= key[pc1[i]-1]; } // 2. Dividing the key into two equal halves string left= perm_key.substr(0, 28); string right= perm_key.substr(28, 28); for(int i=0; i<16; i++){ // 3.1. For rounds 1, 2, 9, 16 the key_chunks // are shifted by one. if(i == 0 || i == 1 || i==8 || i==15 ){ left= shift_left_once(left); right= shift_left_once(right); } // 3.2. For other rounds, the key_chunks // are shifted by two else{ left= shift_left_twice(left); right= shift_left_twice(right); } // Combining the two chunks string combined_key = left + right; string round_key = ""; // Finally, using the PC2 table to transpose the key bits for(int i = 0; i < 48; i++){ round_key += combined_key[pc2[i]-1]; } round_keys[i] = round_key; } } // Implementing the algorithm string DES(){ // The initial permutation table int initial_permutation[64] = { 58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6, 64,56,48,40,32,24,16,8, 57,49,41,33,25,17,9,1, 59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5, 63,55,47,39,31,23,15,7 }; // The expansion table int expansion_table[48] = { 32,1,2,3,4,5,4,5, 6,7,8,9,8,9,10,11, 12,13,12,13,14,15,16,17, 16,17,18,19,20,21,20,21, 22,23,24,25,24,25,26,27, 28,29,28,29,30,31,32,1 }; // The substitution boxes. The should contain values // from 0 to 15 in any order. int substition_boxes[8][4][16]= {{ {14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7}, {0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8}, {4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0}, {15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13} }, { {15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10}, {3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5}, {0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15}, {13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9} }, { {10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8}, {13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1}, {13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7}, {1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12} }, { {7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15}, {13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9}, {10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4}, {3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14} }, { {2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9}, {14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6}, {4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14}, {11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3} }, { {12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11}, {10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8}, {9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6}, {4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13} }, { {4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1}, {13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6}, {1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2}, {6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12} }, { {13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7}, {1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2}, {7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8}, {2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11} }}; // The permutation table int permutation_tab[32] = { 16,7,20,21,29,12,28,17, 1,15,23,26,5,18,31,10, 2,8,24,14,32,27,3,9, 19,13,30,6,22,11,4,25 }; // The inverse permutation table int inverse_permutation[64]= { 40,8,48,16,56,24,64,32, 39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, 37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28, 35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26, 33,1,41,9,49,17,57,25 }; //1. Applying the initial permutation string perm = ""; for(int i = 0; i < 64; i++){ perm += pt[initial_permutation[i]-1]; } // 2. Dividing the result into two equal halves string left = perm.substr(0, 32); string right = perm.substr(32, 32); // The plain text is encrypted 16 times for(int i=0; i<16; i++) { string right_expanded = ""; // 3.1. The right half of the plain text is expanded for(int i = 0; i < 48; i++) { right_expanded += right[expansion_table[i]-1]; }; // 3.3. The result is xored with a key string xored = Xor(round_keys[i], right_expanded); string res = ""; // 3.4. The result is divided into 8 equal parts and passed // through 8 substitution boxes. After passing through a // substitution box, each box is reduced from 6 to 4 bits. for(int i=0;i<8; i++){ // Finding row and column indices to lookup the // substitution box string row1= xored.substr(i*6,1) + xored.substr(i*6 + 5,1); int row = convertBinaryToDecimal(row1); string col1 = xored.substr(i*6 + 1,1) + xored.substr(i*6 + 2,1) + xored.substr(i*6 + 3,1) + xored.substr(i*6 + 4,1);; int col = convertBinaryToDecimal(col1); int val = substition_boxes[i][row][col]; res += convertDecimalToBinary(val); } // 3.5. Another permutation is applied string perm2 =""; for(int i = 0; i < 32; i++){ perm2 += res[permutation_tab[i]-1]; } // 3.6. The result is xored with the left half xored = Xor(perm2, left); // 3.7. The left and the right parts of the plain text are swapped left = xored; if(i < 15){ string temp = right; right = xored; left = temp; } } // 4. The halves of the plain text are applied string combined_text = left + right; string ciphertext =""; // The inverse of the initial permutation is applied for(int i = 0; i < 64; i++){ ciphertext+= combined_text[inverse_permutation[i]-1]; } //And we finally get the cipher text return ciphertext; } int main(){ // A 64 bit key // string key= "0001001100110100010101110111100110011011101111001101111111110001"; string key; cout << "Enter the 64-bit key : "; getline(cin, key); // A block of plain text of 64 bits // pt= "0000000100100011010001010110011110001001101010111100110111101111"; cout << "Enter the 64-bit plain text : "; getline(cin, pt); // Calling the function to generate 16 keys generate_keys(key); cout<<"Plain text: "<<pt<<endl; // Applying the algo string ct= DES(); cout<<"Ciphertext: "<<ct<<endl; } //des-decrypt // Including dependancies #include <iostream> #include <string> #include <cmath> using namespace std; // Array to hold 16 keys string round_keys[16]; // String to hold the plain text string pt; // Function to convert a number in decimal to binary string convertDecimalToBinary(int decimal) { string binary; while(decimal != 0) { binary = (decimal % 2 == 0 ? "0" : "1") + binary; decimal = decimal/2; } while(binary.length() < 4){ binary = "0" + binary; } return binary; } // Function to convert a number in binary to decimal int convertBinaryToDecimal(string binary) { int decimal = 0; int counter = 0; int size = binary.length(); for(int i = size-1; i >= 0; i--) { if(binary[i] == '1'){ decimal += pow(2, counter); } counter++; } return decimal; } // Function to do a circular left shift by 1 string shift_left_once(string key_chunk){ string shifted=""; for(int i = 1; i < 28; i++){ shifted += key_chunk[i]; } shifted += key_chunk[0]; return shifted; } // Function to do a circular left shift by 2 string shift_left_twice(string key_chunk){ string shifted=""; for(int i = 0; i < 2; i++){ for(int j = 1; j < 28; j++){ shifted += key_chunk[j]; } shifted += key_chunk[0]; key_chunk= shifted; shifted =""; } return key_chunk; } // Function to compute xor between two strings string Xor(string a, string b){ string result = ""; int size = b.size(); for(int i = 0; i < size; i++){ if(a[i] != b[i]){ result += "1"; } else{ result += "0"; } } return result; } // Function to generate the 16 keys. void generate_keys(string key){ // The PC1 table int pc1[56] = { 57,49,41,33,25,17,9, 1,58,50,42,34,26,18, 10,2,59,51,43,35,27, 19,11,3,60,52,44,36, 63,55,47,39,31,23,15, 7,62,54,46,38,30,22, 14,6,61,53,45,37,29, 21,13,5,28,20,12,4 }; // The PC2 table int pc2[48] = { 14,17,11,24,1,5, 3,28,15,6,21,10, 23,19,12,4,26,8, 16,7,27,20,13,2, 41,52,31,37,47,55, 30,40,51,45,33,48, 44,49,39,56,34,53, 46,42,50,36,29,32 }; // 1. Compressing the key using the PC1 table string perm_key =""; for(int i = 0; i < 56; i++){ perm_key+= key[pc1[i]-1]; } // 2. Dividing the key into two equal halves string left= perm_key.substr(0, 28); string right= perm_key.substr(28, 28); for(int i=0; i<16; i++){ // 3.1. For rounds 1, 2, 9, 16 the key_chunks // are shifted by one. if(i == 0 || i == 1 || i==8 || i==15 ){ left= shift_left_once(left); right= shift_left_once(right); } // 3.2. For other rounds, the key_chunks // are shifted by two else{ left= shift_left_twice(left); right= shift_left_twice(right); } // Combining the two chunks string combined_key = left + right; string round_key = ""; // Finally, using the PC2 table to transpose the key bits for(int i = 0; i < 48; i++){ round_key += combined_key[pc2[i]-1]; } round_keys[i] = round_key; } } // Implementing the algorithm string DES(){ // The initial permutation table int initial_permutation[64] = { 58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6, 64,56,48,40,32,24,16,8, 57,49,41,33,25,17,9,1, 59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5, 63,55,47,39,31,23,15,7 }; // The expansion table int expansion_table[48] = { 32,1,2,3,4,5,4,5, 6,7,8,9,8,9,10,11, 12,13,12,13,14,15,16,17, 16,17,18,19,20,21,20,21, 22,23,24,25,24,25,26,27, 28,29,28,29,30,31,32,1 }; // The substitution boxes. The should contain values // from 0 to 15 in any order. int substition_boxes[8][4][16]= {{ {14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7 }, {0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8 }, {4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0 }, {15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13 } }, { {15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10 }, {3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5 }, {0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15 }, {13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9 } }, { {10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8 }, {13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1 }, {13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7 }, {1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12 } }, { {7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15 }, {13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9 }, {10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4 }, {3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14 } }, { {2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9 }, {14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6 }, {4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14 }, {11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 } }, { {12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11 }, {10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8 }, {9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6 }, {4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13 } }, { {4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1 }, {13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6 }, {1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2 }, {6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12 } }, { {13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7 }, {1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2 }, {7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8 }, {2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11 } }}; // The permutation table int permutation_tab[32] = { 16,7,20,21,29,12,28,17, 1,15,23,26,5,18,31,10, 2,8,24,14,32,27,3,9, 19,13,30,6,22,11,4,25 }; // The inverse permutation table int inverse_permutation[64]= { 40,8,48,16,56,24,64,32, 39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, 37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28, 35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26, 33,1,41,9,49,17,57,25 }; //1. Applying the initial permutation string perm = ""; for(int i = 0; i < 64; i++){ perm += pt[initial_permutation[i]-1]; } // 2. Dividing the result into two equal halves string left = perm.substr(0, 32); string right = perm.substr(32, 32); // The plain text is encrypted 16 times for(int i=0; i<16; i++) { string right_expanded = ""; // 3.1. The right half of the plain text is expanded for(int i = 0; i < 48; i++) { right_expanded += right[expansion_table[i]-1]; }; // 3.3. The result is xored with a key string xored = Xor(round_keys[i], right_expanded); string res = ""; // 3.4. The result is divided into 8 equal parts and passed // through 8 substitution boxes. After passing through a // substituion box, each box is reduces from 6 to 4 bits. for(int i=0;i<8; i++){ // Finding row and column indices to lookup the // substituition box string row1= xored.substr(i*6,1) + xored.substr(i*6 + 5,1); int row = convertBinaryToDecimal(row1); string col1 = xored.substr(i*6 + 1,1) + xored.substr(i*6 + 2,1) + xored.substr(i*6 + 3,1) + xored.substr(i*6 + 4,1);; int col = convertBinaryToDecimal(col1); int val = substition_boxes[i][row][col]; res += convertDecimalToBinary(val); } // 3.5. Another permutation is applied string perm2 =""; for(int i = 0; i < 32; i++){ perm2 += res[permutation_tab[i]-1]; } // 3.6. The result is xored with the left half xored = Xor(perm2, left); // 3.7. The left and the right parts of the plain text are swapped left = xored; if(i < 15){ string temp = right; right = xored; left = temp; } } // 4. The halves of the plain text are applied string combined_text = left + right; string ciphertext =""; // The inverse of the initial permuttaion is applied for(int i = 0; i < 64; i++){ ciphertext+= combined_text[inverse_permutation[i]-1]; } //And we finally get the cipher text return ciphertext; } int main(){ // A 64 bit key // string key= "0001001100110100010101110111100110011011101111001101111111110001"; string key; cout << "Enter the 64-bit key : "; getline(cin, key); // A block of plain text of 64 bits // pt= "0000000100100011010001010110011110001001101010111100110111101111"; cout << "Enter the 64-bit plain text : "; getline(cin, pt); string apt = pt; // Calling the function to generate 16 keys generate_keys(key); cout<<"Plain text: "<<pt<<endl; // Applying the algo string ct= DES(); cout<<"Ciphertext: "<<ct<<endl; // Reversing the round_keys array for decryption int i = 15; int j = 0; while(i > j) { string temp = round_keys[i]; round_keys[i] = round_keys[j]; round_keys[j] = temp; i--; j++; } pt = ct; string decrypted = DES(); cout<<"Decrypted text:"<<decrypted<<endl; // Comapring the initial plain text with the decrypted text if (decrypted == apt){ cout<<"Plain text encrypted and decrypted successfully."<<endl; } }
Raw Text
-
The Genius Wave
5 min ago
-
What The Pentagon Can Teach You About Oem Keto Gummies United Kingdom
17 min ago
-
sdcfsd
PHP | 18 min ago
-
5KPORN Redhead Daphne Dare In Fishnets
18 min ago
-
c pl ol
25 min ago
-
https://www.facebook.com/ProperKetoCapsulesInUK/
27 min ago
-
https://www.facebook.com/FitFlareKetoGummiesReviews/
28 min ago
-
FitsPresso: Your Key to Effective Weight Loss
35 min ago
-
https://www.facebook.com/ProperKetoCapsulesInUK/
41 min ago
-
FREE C** Pš
NEW D00DS š¦
42 min ago