本文共 3191 字,大约阅读时间需要 10 分钟。
rail_deviceid
Here you will get rail fence cipher program in C and C++ for encryption and decryption.
在这里,您将获得用于加密和解密的C和C ++的Rail fence密码程序。
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.
这里的Key =3。为进行加密,我们将消息对角地以Z字形写在矩阵中,该矩阵的总行数=密钥,总列数=消息长度。 然后水平读取矩阵行以获取加密的消息。
#include#include 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
原始消息:Hello World 加密消息:Horel ollWd 解密消息:Hello World
#include#include 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<
Comment below if you have queries related to above rail fence cipher program in C and C++.
如果您对上面的C和C ++围栏密码程序有疑问,请在下面评论。
翻译自:
rail_deviceid
转载地址:http://rmggb.baihongyu.com/