满意答案
meik1234
2013.12.31
采纳率:44% 等级:11
已帮助:15008人
2、周期换位密码
把明文中的字母按给定的顺序排在一个矩阵中,然后用另一种顺序选出矩阵中的字母来产生密文。例如,给定一个置换F=2、4、1、3,即按第2列、第4列、第1列、第3列的次序排列。
加密过程如下:
第一步,排列
1234
guangzhouisabeautifulcity
第二步,打断
1234
guan
gzho
uisa
beau
tifu
lcit
y###
第三步,周期换位
2413
unga
zogh
iaus
euba
iutf
ctli
##y#
第四步,产生密文
ungazoghiauseubaiutfctli##y#
#include
#include
#define N 4
void main()
{ int m,i,j;
char p1[80],p2[20][N],p3[20][N];
char pstr[]="guangzhouisabeautifulcity";
//用符号'#'填充明文
m=(strlen(pstr)/N+1)*N;
for(i=0;i
p1[i]=pstr[i];
for(i=strlen(pstr);i
p1[i]='#';
//打断
m=m/N;
for(i=0;i
for(j=0;j
p2[i][j]=p1[i*N+j];
//2413周期换位,产生密文
for(i=0;i
{
p3[i][0]=p2[i][1];
p3[i][1]=p2[i][3];
p3[i][2]=p2[i][0];
p3[i][3]=p2[i][2];
}
//输出
cout<
for(i=0;i
cout<
cout<
for(i=0;i
for(j=0;j
cout<
cout<
}
03分享举报