C语言置换密码
置换密码:将明文按照密钥的长度为一行排成矩阵,不足用其他字符补齐,再按密钥的顺序重新排列每一列,按竖排读出得到密文
例子:
明文:Beijing2008OlympicGames
密钥:421365
用$补齐矩阵
明文的矩阵:
B e i j i n
g 2 0 0 8 O
l y m p i c
G a m e s $
对密钥的解释:密钥的第一位是3,就是把明文的第3列放到密文的第一列。
密文的矩阵:
i e j B n i
0 2 0 g O 8
m y p l c i
m a e G $ s
得到的密文:
i0mme2yaj0peBglGnOc$i8is
解密:
将密文如下排列:
i 0 m m
e 2 y a
j 0 p e
B g l G
n O c $
i 8 i s
按密钥的顺序依次读取每一列中的每一行
密钥是421365,则先读取第一列中的第4行的B。
C语言代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
int len = 0, row = 0,i = 0,j=0,check=2;
char plainText[2048] = { 32 }, temp[2048] = { 32 };
char key[10] = { 0 }, tempkey[10] = { 0 };
printf("输入原文: