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++.
The post Rail Fence Cipher Program in C and C++[Encryption & Decryption] appeared first on The Crazy Programmer.
from The Crazy Programmer http://www.thecrazyprogrammer.com/2017/09/rail-fence-cipher-program-in-c.html
Pls give the column program
ReplyDeletePls send the pgm
DeleteNode.js Debugger
ReplyDeletenpm repl
Node.js MySQL
Node.js MySQL Insert Record
Node.js MySQL Create Table
Node.js MySQL Where
Node.js MySQL Update Record
Deleting Data in MySQL from Node.js
Node.js MySQL Drop Table