当前位置:首页 > 文件加密 C代码 老师高分通过
/*7. 文件加密。文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。要求:
(1)对文件的字符根据加密算法,实现文件加密。 (2)对操作给出必要的提示。 (3) 对存在的file1.txt文件,必须先打开,后读写,最后关闭。加密后的文件放在file2.txt。 (4)解密文件保存在file3.txt中。*/
#include \#include \#include \#include \int menu(){
char a[20]; int b; while(1){ system(\ system(\ printf(\文件移位加密与解密*=*=*=*=*=*=*=*=*\ printf(\计本102*=*=*=*=*=*=*=*=*=*=*=*\ printf(\卢荣盼=*=*=*=*=*=*=*=*=*=*=*=*\ printf(\ printf(\
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\\n\\n\ printf(\
$*&$*&$=$*&$=$*&$=$*&$*&$=$*&$=$*&$=$*&$=$*&$=$*&$=$*&$=$$\\n\
printf(\ $ 文件加密请输入【1】 文件解密请输入【2】 $\\n\ printf(\
$*&$=$*&$=$*&$=$*&$=$*&$*&$=$*&$=$*&$=$=*&$*&$=*&$=$*&$=$$\\n\\n\
printf(\ 请输入处理文件的方式: \ scanf(\ b=strtol(a,NULL,0); if(b==1||b==2){break;} else{system(\
printf(\ 对不起,您选择的功能有误,请重新选择!!\\n\\n\ system(\ } return b; }
void main(){ FILE *fp1,*fp2,*fp3; int i,j=0,j0=0,b=0,c=0,flag=0,flag1=0,flag3=0,a,d;
char pwd[20],pwd1[20000],m[20000],ch; char infile[200],outfile[200]; while(1){switch(menu()){
case 1: system(\
printf(\ 请输入要加密的文件名: \ scanf(\ if((fp1=fopen(infile,\ system(\
printf(\没有找到此文件!!\\n\
入!!\
exit(0);} while(1){ printf(\ 请输入加密密码: \for(i=0;i<20;i++){ b++; pwd[i]=getch();
if(pwd[i]=='\\r') {break;} printf(\} printf(\ 请确认加密密码: \for(i=0;i<20;i++){
pwd1[i]=getch();
if(pwd1[i]=='\\r') {break;} printf(\} for(i=0;i<20;i++) if(pwd[i]!=pwd1[i]){ flag++; }
if(flag!=0){printf(\两次密码输入不一致,请重新输else{
printf(\ 密码输入成功,请牢记您的密码: \ printf(\ 请输入加密后保存到的文件名: \ scanf(\ if((fp2=fopen(outfile,\ system(\
printf(\没有找到此文件!!\\n\
exit(0);} for(i=0;i
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/ ch=fgetc(fp1);
}
fclose(fp1);fclose(fp2); b=0; printf(\文件加密成功!!\\n\ break;} }
system(\d0\·-·-感谢您的使用,欢迎再次使用-·-·-*\\n\\n\
case 2: system(\
printf(\ 请输入要解密的文件名: \ scanf(\ if((fp2=fopen(infile,\ system(\
printf(\没有找到此文件!!\\n\ exit(0);} while(1){
printf(\ 请输入解密密码: \ for(i=0;i<20;i++){c++; pwd[i]=getch();
if(pwd[i]=='\\r') {break;} printf(\ } printf(\ 请确认解密密码: \ for(i=0;i<20;i++){
pwd1[i]=getch();
if(pwd1[i]=='\\r') {break;} printf(\ } for(i=0;i<20;i++) if(pwd[i]!=pwd1[i]){ flag1++; }
if(flag1!=0){printf(\两次密码输入不一致,请重新输
入!!\ else{ for(i=0;i printf(\ 请输入解密后保存到的文件名: \ scanf(\ if((fp3=fopen(outfile,\ system(\ printf(\没有找到此文件!!\\n\ exit(0);} while(pwd[++j0]); ch=fgetc(fp2); d=c+1; -·-·-*\\n\\n\ } } while(!feof(fp2)){ fseek(fp2,d++,0); fputc(ch^pwd[j>=j0?j=0:j++],fp3);/*异或后写入fp2文件*/ ch=fgetc(fp2); }} fclose(fp2);fclose(fp3); printf(\文件解密成功!!\\n\ break;} } system(\d0\·-·-感谢您的使用,欢迎再次使用}
共分享92篇相关文档