凯撒密码(加密与解密)
发布时间:2020-12-16 07:45:22 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 /************************************************************************/ /*caeser.c /* 凯撒密码是把明文字符按照相同的位移量向后移动 /*比如
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 /************************************************************************/ /*caeser.c /* 凯撒密码是把明文字符按照相同的位移量向后移动 /*比如明文can,位移量为3,密文为fdq /*本程序仅对英文字母和数字有效 /*使用时将文件置于caeser.c同目录下,密文默认名字为cipher.txt /************************************************************************/ #include<stdio.h> #include<stdlib.h> #define ITEM 2 void encipher(); void decipher(); int main() { int flag; void (*menu[ITEM])()={encipher,decipher}; printf("加密文件——1n"); printf("解密文件——2n"); printf("退出程序——0n"); while(1) { scanf("%d",&flag); if(!flag) exit(1); else if(flag==1||flag==2) menu[flag-1](); else break; } return 0; } void encipher() { int key; char ch,c; char file_name[50]; FILE *infile,*outfile; printf("输入欲加密文件名:"); scanf("%s",file_name); printf("输入加密密钥:"); scanf("%d",&key); if((infile=fopen(file_name,"r"))==NULL) { printf("Cannot open file!n"); exit(1); } if((outfile=fopen("cipher.txt","w"))==NULL) { printf("Cannot open file!n"); exit(1); } ch=fgetc(infile); while(!feof(infile)) { if(ch>=48&&ch<=57)//数字加密 { c=((ch-48)+key)%10; fputc((char)(c+48),outfile); } else if(ch>=65&&ch<=90)//大写英文字母加密 { c=((ch-65)+key)%26; fputc((char)(c+65),outfile); } else if(ch>=97&&ch<=122)//小写英文字母加密 { c=((ch-97)+key)%26; fputc((char)(c+97),outfile); } else fputc(ch,outfile); ch=fgetc(infile); } if(fclose(infile)||fclose(outfile)) printf("File cannot close!n"); else printf("加密成功"); } void decipher() { int key; char ch,c; FILE *infile,*outfile; printf("输入解密密钥:"); scanf("%d",&key); if((infile=fopen("cipher.txt","r"))==NULL) { printf("Cannot open file!n"); exit(1); } if((outfile=fopen("a.txt","w"))==NULL) { printf("Cannot open file!n"); exit(1); } ch=fgetc(infile); while(!feof(infile)) { if(ch>=48&&ch<=57)//数字解密 { c=((ch-48)-key+10)%10;//此处+10是防止,c==负数 fputc((c+48),outfile); } else if(ch>=65&&ch<=90)//大写英文字母解密 { c=((ch-65)-key+26)%26; fputc((char)(c+65),outfile); } else if(ch>=97&&ch<=122)//小写英文字母解密 { c=((ch-97)-key+26)%26; fputc((char)(c+97),outfile); ch=fgetc(infile); } if(fclose(infile)||fclose(outfile)) printf("File cannot close!n"); else printf("解密成功"); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |