谁能给我发个置换密码的加密解密源代码 还有关于置换密码实验的总结 不要复制网上那些的 要能用vc++运行成

最好有注释以便我学习学习。谢谢了很急... 最好有注释 以便我学习学习。 谢谢了 很急 展开
 我来答
20081022144
2010-12-15
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#define N 3
main()
{char choose;
char p[N+1];
char c[N+1];
int key[2][N];
int dekey[2][N];
int i,j;
int k;
printf("encryption press E or e\ndecyption press D or d\n");
choose=getchar();
getchar();
if(choose=='E'||choose=='e')
{printf("输入密钥置换阵:");
for(i=0;i<2;i++)
for(j=0;j<N;j++)
scanf("%d",&key[i][j]);
getchar(); /*接收回车符*/
printf("加密密钥置换阵为:\n");
printf("-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",key[0][i]);
printf("\n-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",key[1][i]);
printf("\n-------------------------------------------------------------\n");

printf("明文:");
gets(p);
printf("明文:%s\n",p);

for(i=0;i<N;i++)
{k=key[1][i];
c[i]=p[k];
}
c[N]='\0';
printf("密文:%s\n",c);

}
if(choose=='D'||choose=='d')
{
printf("输入密钥置换阵:");
for(i=0;i<2;i++)
for(j=0;j<N;j++)
scanf("%d",&key[i][j]);
getchar();/*接收回车符*/
printf("加密密钥置换阵为:\n");
printf("-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",key[0][i]);
printf("\n-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",key[1][i]);
printf("\n-------------------------------------------------------------\n");

for(i=0;i<N;i++)
dekey[0][i]=i;
for(j=0;j<N;j++)
for(k=0;k<N;k++)
if(key[1][k]==j)
dekey[1][j]=k;
printf("解密密钥置换阵为:\n");
printf("-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",dekey[0][i]);
printf("\n-------------------------------------------------------------\n");
for(i=0;i<N;i++)
printf("%5d",dekey[1][i]);
printf("\n-------------------------------------------------------------\n");

printf("密文:");
gets(c);
printf("密文:%s\n",c);

for(i=0;i<N;i++)
{k=dekey[1][i];
p[i]=c[k];
}
p[N]='\0';
printf("明文:%s\n",p);

}

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式