- 10
- 0
- 约3.92千字
- 约 12页
- 2018-04-22 发布于江西
- 举报
古典密码学(替换置换加密)C程序.doc
替换:
#include stdio.h
int encrypt( )
{
char STR[27]= {X,N,Y,A,H,P,O,G,Z,Q,W,B,T,S,F,L,R,C,V,M,U,E,K,J,D,I};
char str[27]={d,l,r,y,v,o,h,e,z,x,w,p,t,b,g,f,j,q,n,m,u,s,k,a,c,i};
int x,i=0;
char code[80],string[80];
printf(请输入你的明文(80字符内的小写字符串):);
scanf(%s,string);
printf(The code is:);
for(i=0;string[i];i++)
{
x=string[i]-97;
code[i]=STR[x];
printf(%c,STR[x]);
}
printf(\n);
return 0;
}
int decrypt( )
{
char STR[27]= {X,N,Y,A,H,P,O,G,Z,Q,W,B,T,S,F,L,R,C,V,M,U,E,K,J,D,I};
char str[27]={d,l,r,y,v,o,h,e,z,x,w,p,t,b,g,f,j,q,n,m,u,s,k,a,c,i};
int x,i=0;
char decode[80],STRING[80];
printf(请输入你的密文(80字符内的大写字符串):);
scanf(%s,STRING);
printf(The decode is:);
for(i=0;STRING[i];i++)
{
x=STRING[i]-65;
decode[i]=str[x];
printf(%c,str[x]);
}
printf(\n);
return 0;
}
int main()
{
char STR[27]= {X,N,Y,A,H,P,O,G,Z,Q,W,B,T,S,F,L,R,C,V,M,U,E,K,J,D,I};
char str[27]={d,l,r,y,v,o,h,e,z,x,w,p,t,b,g,f,j,q,n,m,u,s,k,a,c,i};
int t,x,y=0,i=0;
char code[80],string[80];
char decode[80],STRING[80];
printf(加密请输入1,解密请输入0:);
scanf(%d,t);
printf(\n);
if(t==1)
{
encrypt();
for(i=0;code[i];i++)
{
x=code[i]-65;
decode[i]=str[x];
if(decode[i]==string[i])
y++;
else y=y;
}
if(y==i-1)
printf(CRYPT_OK!\n);
else printf(CRYPT_ERROR!\n);
}
else if(t==0)
{
decrypt();
for(i=0;decode[i];i++)
{
x=decode[i]-65;
code[i]=STR[x];
if(code[i]==STRING[i])
y++;
else y=y;
}
if(y==i-125)
printf(CRYPT_OK!\n);
else printf(CRYPT_ERROR!\n);
}
else
printf(ERROR!\n);
return 0;
}
置换:
#includestdio.h
#includestring.h
#includestdlib.h
char *encrypt(char *str,int n)
{
int i,j,k,l,d;
char *c,*s1,*c1;
l=strlen(str);
if((d=l%n)!=0) l=l+n-d;
if((s1=(char *)malloc(l*sizeof(char)+1))==NULL)
{
printf(Memory error!\n);
exit(l);
}
if((c=(char *)malloc(l*sizeof(char)+1))==NULL)
{
printf(Memory error!\n);
exit(l);
}
c1=c;
s
原创力文档

文档评论(0)