凯撒密码,C语言,求救!(凯撒密码加密解密C语言)

2023-03-06 18:03:23 密语知识 思思

#include stdio.h

#include string.h

int main()

{

int i = 0;

int len = 0;

char ch;

char buf[256] = {0};

char nor[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

char enc[26] = {'s','u','w','y','a','c','e','g','i','k','m','o','q','r','t','v','x','z','b','d','f','h','j','l','n','p'};

printf("Encode or Decode: ");

scanf("%c",ch);

printf("please input your string: ");

fflush(stdin);

gets(buf);

len = strlen(buf);

switch (ch)

{

case 'e':

case 'E':

for (i=0;ilen;i++)

{

buf[i] = enc[buf[i] - 'a'];

}

break;

case 'd':

case 'D':

for (i=0;ilen;i++)

{

buf[i] = nor[i];

}

break;

default:

printf("wrong input!\n");

}

printf("%s\n",buf);

return 0;

}

用C语言实现凯撒密码加密解密,急!

凯撒密码就是简单的加上一个数,'a'+3='d';'z'+3='c' 假设原文全是小写字母,那么 char plain[N]={...}; //明文 char cipher[N]={};//密文 int key=3; int i=0,temp; for(i=0;iN;i++) {if(plain[i]!=' ') {temp=plain[i]+key-'a'; temp=temp%26; cipher[i]=temp+'a'; } else cipher[i]=plain[i]; } 这样就完成了加密,密文数组里面就是对原文加密后的密文,key是密钥。

求凯撒加密法(C语言)

#includestdio.h

#includeconio.h char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/

{

while(ch=Ach=Z)

{

return (A+(ch-A+n)%26);

}

while(ch=ach=z)

{

return (a+(ch-a+n)%26);

}

return ch;

}void menu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/

{

clrscr();

printf("\n===============================================================================");

printf("\n1.Encrypt the file");

printf("\n2.Decrypt the file");

printf("\n3.Force decrypt file");

printf("\n4.Quit\n");

printf("===============================================================================\n");

printf("Please select a item:");

return;

}void logo()/*显示版权信息*/

{

printf("\nZhensoft Encryption [Version:1.0.0]");

printf("\nCopyright (C) 2004 Zhensoft Corp.\n");

printf("\n \n");

return;

}

main()

{

int i,n;

char ch0,ch1;

FILE *in,*out;

char infile[20],outfile[20];textbackground(BLACK);

textcolor(LIGHTGREEN);

clrscr();logo();

sleep(3);/*等待3秒*/menu();

ch0=getch();while(ch0!=4)

{

if(ch0==1)

{

clrscr();

printf("\nPlease input the infile:");

scanf("%s",infile);/*输入需要加密的文件名*/ if((in=fopen(infile,"r"))==NULL)

{

printf("Can not open the infile!\n");

printf("Press any key to exit!\n");

getch();

exit(0);

} printf("Please input the key:");

scanf("%d",n);/*输入加密密码*/ printf("Please input the outfile:");

scanf("%s",outfile);/*输入加密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL)

{

printf("Can not open the outfile!\n");

printf("Press any key to exit!\n");

fclose(in);

getch();

exit(0);

} while(!feof(in))/*加密*/

{

fputc(encrypt(fgetc(in),n),out);

} printf("\nEncrypt is over!\n");

fclose(in);

fclose(out);

sleep(1);

} if(ch0==2)

{

clrscr();

printf("\nPlease input the infile:");

scanf("%s",infile);/*输入需要解密的文件名*/ if((in=fopen(infile,"r"))==NULL)

{

printf("Can not open the infile!\n");

printf("Press any key to exit!\n");

getch();

exit(0);

} printf("Please input the key:");

scanf("%d",n);/*输入解密密码(可以为加密时候的密码)*/ n=26-n; printf("Please input the outfile:");

scanf("%s",outfile);/*输入解密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL)

{

printf("Can not open the outfile!\n");

printf("Press any key to exit!\n");

fclose(in);

getch();

exit(0);

} while(!feof(in))

{

fputc(encrypt(fgetc(in),n),out);

}

printf("\nDecrypt is over!\n");

fclose(in);

fclose(out);

sleep(1);

} if(ch0==3)

{

clrscr();

printf("\nPlease input the infile:");

scanf("%s",infile);/*输入需要解密的文件名*/ if((in=fopen(infile,"r"))==NULL)

{

printf("Can not open the infile!\n");

printf("Press any key to exit!\n");

getch();

exit(0);

} printf("Please input the outfile:");

scanf("%s",outfile);/*输入解密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL)

{

printf("Can not open the outfile!\n");

printf("Press any key to exit!\n");

fclose(in);

getch();

exit(0);

} for(i=1;i=25;i++)/*暴力破解过程,在察看信息正确后,可以按Q或者q退出*/

{

rewind(in);

rewind(out);

clrscr();

printf("===============================================================================\n");

printf("The outfile is:\n");

printf("===============================================================================\n");

while(!feof(in))

{

ch1=encrypt(fgetc(in),26-i);

putch(ch1);

fputc(ch1,out);

}

printf("\n===============================================================================\n");

printf("The current key is: %d \n",i);/*显示当前破解所用密码*/

printf("Press Q to quit and other key to continue......\n");

printf("===============================================================================\n");

ch1=getch();

if(ch1==q||ch1==Q)/*按Q或者q时退出*/

{

clrscr();

logo();

printf("\nGood Bye!\n");

fclose(in);

fclose(out);

sleep(3);

exit(0);

}

} printf("\nForce decrypt is over!\n");

fclose(in);

fclose(out);

sleep(1);

}

menu();

ch0=getch();

}

clrscr();

logo();

printf("\nGood Bye!\n");

sleep(3);

}