Rail Fence Cipher Program In C And C++[Encryption & Decryption]
Maybe your like
Here you will get rail fence cipher program in C and C++ for encryption and decryption.
It is a kind of transposition cipher which is also known as zigzag cipher. Below is an example.

Here Key = 3. For encryption we write the message diagonally in zigzag form in a matrix having total rows = key and total columns = message length. Then read the matrix row wise horizontally to get encrypted message.
Rail Fence Cipher Program in C
#include<stdio.h> #include<string.h> void encryptMsg(char msg[], int key){ int msgLen = strlen(msg), i, j, k = -1, row = 0, col = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = msg[i]; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } printf("\nEncrypted Message: "); for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] != '\n') printf("%c", railMatrix[i][j]); } void decryptMsg(char enMsg[], int key){ int msgLen = strlen(enMsg), i, j, k = -1, row = 0, col = 0, m = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = '*'; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] == '*') railMatrix[i][j] = enMsg[m++]; row = col = 0; k = -1; printf("\nDecrypted Message: "); for(i = 0; i < msgLen; ++i){ printf("%c", railMatrix[row][col++]); if(row == 0 || row == key-1) k= k * (-1); row = row + k; } } int main(){ char msg[] = "Hello World"; char enMsg[] = "Horel ollWd"; int key = 3; printf("Original Message: %s", msg); encryptMsg(msg, key); decryptMsg(enMsg, key); return 0; }Output
Original Message: Hello World Encrypted Message: Horel ollWd Decrypted Message: Hello World
Rail Fence Cipher Program in C++
#include<iostream> #include<string.h> using namespace std; void encryptMsg(char msg[], int key){ int msgLen = strlen(msg), i, j, k = -1, row = 0, col = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = msg[i]; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } cout<<"\nEncrypted Message: "; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] != '\n') cout<<railMatrix[i][j]; } void decryptMsg(char enMsg[], int key){ int msgLen = strlen(enMsg), i, j, k = -1, row = 0, col = 0, m = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = '*'; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] == '*') railMatrix[i][j] = enMsg[m++]; row = col = 0; k = -1; cout<<"\nDecrypted Message: "; for(i = 0; i < msgLen; ++i){ cout<<railMatrix[row][col++]; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } } int main(){ char msg[] = "Hello World"; char enMsg[] = "Horel ollWd"; int key = 3; cout<<"Original Message: "<<msg; encryptMsg(msg, key); decryptMsg(enMsg, key); return 0; }Comment below if you have queries related to above rail fence cipher program in C and C++.
Tag » Code Rail Fence
-
Rail Fence Cipher - Crypto Corner - Interactive Maths
-
Chiffre Rail Fence (Zig-Zag) - Déchiffrer, Décoder, Encoder En Ligne
-
Rail Fence Cipher (online Tool) - Boxentriq
-
Rail Fence Cipher - Encryption And Decryption - GeeksforGeeks
-
Rail Fence Cipher: Encode And Decode Online - Cryptii
-
The Rail Fence Cipher - 101 Computing
-
Symmetric Key Cryptography: The Rail Fence Cipher - YouTube
-
Rail Fence Cipher - Kids Coding Magazine
-
Rail Fence Cipher Algorithm Program In C/C++
-
Rail Fence Cipher Solution
-
[PDF] Secret Codes With The Rail Fence Cipher Method
-
Implementing Rail-fence Cipher In Python - CodeSpeedy
-
Cryptography - Rail Fence - C# Corner