
置换密码
-
2023年2月27日发(作者:星星诗刊)替换:
#include
intencrypt()
{
charSTR[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'};
charstr[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'};
intx,i=0;
charcode[80],string[80];
printf("请输入你的明文(80字符内的小写字符串):");
scanf("%s",string);
printf("Thecodeis:");
for(i=0;string[i];i++)
{
x=string[i]-97;
code[i]=STR[x];
printf("%c",STR[x]);
}
printf("n");
return0;
}
intdecrypt()
{
charSTR[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'};
charstr[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'};
intx,i=0;
chardecode[80],STRING[80];
printf("请输入你的密文(80字符内的大写字符串):");
scanf("%s",STRING);
printf("Thedecodeis:");
for(i=0;STRING[i];i++)
{
x=STRING[i]-65;
decode[i]=str[x];
printf("%c",str[x]);
}
printf("n");
return0;
}
intmain()
{
charSTR[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'};
charstr[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'};
intt,x,y=0,i=0;
charcode[80],string[80];
chardecode[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++;
elsey=y;
}
if(y==i-1)
printf("CRYPT_OK!n");
elseprintf("CRYPT_ERROR!n");
}
elseif(t==0)
{
decrypt();
for(i=0;decode[i];i++)
{
x=decode[i]-65;
code[i]=STR[x];
if(code[i]==STRING[i])
y++;
elsey=y;
}
if(y==i-125)
printf("CRYPT_OK!n");
elseprintf("CRYPT_ERROR!n");
}
else
printf("ERROR!n");
return0;
}
置换:
#include
#include
#include
char*encrypt(char*str,intn)
{
inti,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("Memoryerror!n");
exit(l);
}
if((c=(char*)malloc(l*sizeof(char)+1))==NULL)
{
printf("Memoryerror!n");
exit(l);
}
c1=c;
strcpy(s1,str);
for(i=strlen(str);i s1[i]=32; s1[l]='0'; for(k=0;k { for(j=0;j { *c1=s1[k+j*n]; c1++; } } *c1='0'; free(s1); returnc; } char*decrypt(char*str,intn) { inti,j,k,l,d; char*c,*s1,*c1; l=strlen(str); if((d=l%n)!=0)l=l+n-d; n=l/n; if((s1=(char*)malloc(l*sizeof(char)+1))==NULL) { printf("Memoryerror!n"); exit(l); } if((c=(char*)malloc(l*sizeof(char)+1))==NULL) { printf("Memoryerror!n"); getch(); exit(l); } c1=c; strcpy(s1,str); for(i=strlen(str);i s1[i]=32; s1[l]='0'; for(k=0;k { for(j=0;j { *c1=s1[k+j*n]; c1++; } } while(*(--c1)==32); c1++; *c1='0'; free(s1); returnc; } intmain() { intn,t,i=0,y=0; charstr[80]; char*c,*s; printf("加密请输入1,解密请输入0:"); scanf("%d",&t); if(t==1) { printf("请输入明文:"); scanf("%s",str); printf("请输入密钥:n="); scanf("%d",&n); c=encrypt(str,n); printf("加密后的密文c=%s$n",c); s=decrypt(c,n); for(i=0;str[i];i++) { if(str[i]==s[i]) y++; elsey=y; } //printf("%d%d",i,y); if(y==i) printf("CRYPT_OK!n"); elseprintf("CRYPT_ERROR!n"); } elseif(t==0) { printf("请输入密文:"); scanf("%s",str); printf("请输入密钥:n="); scanf("%d",&n); c=decrypt(str,n); printf("解密后的明文c=%s$n",c); s=encrypt(c,n); for(i=0;str[i];i++) { if(str[i]==s[i]) y++; elsey=y; } if(y==i) printf("CRYPT_OK!n"); elseprintf("CRYPT_ERROR!n"); } elseprintf("ERROR!"); return0; }