刪除/*采用文件逐字節(jié)與密碼異或方式對文件進行加密,密碼需在8個字符或數(shù)字以內(nèi) ?當解密時,只需再運行一遍加密程序即可*/#include<stdio.h>#include<stdlib.h>#include"conio.h"#include<string.h>void dofile(char *in_fname,char *pwd,char *out_fname);/*對文件進行加密的具體函數(shù)*/int main(int argc,char *argv[])/*定義main()函數(shù)的命令行參數(shù)*/{ ? ?while(1) ? ?{ ? ? ? ?char in_fname[30];/*用戶輸入的要加密的文件名*/ ? ?char out_fname[30]; ? ?char pwd[8];/*用來保存密碼*/ ? ?if(argc!=4){/*容錯處理*/ ? ?printf("輸入要加密的文件路徑和名稱:\n"); ? ?gets(in_fname);/*得到要加密的文件名*/ ? ?printf("設置密碼:\n"); ? ?gets(pwd);/*得到密碼*/ ? ? ? ?printf("輸出加密后的文件路徑和名稱:\n"); ? ? ? ?gets(out_fname);/*得到加密后你要的文件名*/ ? ? ? ?dofile(in_fname,pwd,out_fname); ? ? ?} ? ?else{/*如果命令行參數(shù)正確,便直接運行程序*/ ? ? ? ?strcpy(in_fname,argv[1]); ? ? ? ?strcpy(pwd,argv[2]); ? ? ? ?strcpy(out_fname,argv[3]); ? ? ? ?dofile(in_fname,pwd,out_fname); ? ?}}/*加密子函數(shù)*/void dofile(char *in_fname,char *pwd,char *out_file){ ? ?FILE *fp1,*fp2; ? ?register char ch; ? ?int j=0; ? ?int j0=0; ? ?fp1=fopen(in_fname,"rb"); ? ?if(fp1==NULL){ ? ?printf("cannot open in-file.\n"); ? ?exit(1);/*如果不能打開要加密的文件,便退出程序*/ ? ?} ? ?fp2=fopen(out_file,"wb"); ? ?if(fp2==NULL){ ? ?printf("cannot open or create out-file.\n"); ? ?exit(1);/*如果不能建立加密后的文件,便退出*/ ? ?} ? ?while(pwd[++j0]); ? ?ch=fgetc(fp1);/*加密算法開始*/ ? ?while(!feof(fp1)){ ? ?fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*異或后寫入fp2文件*/ ? ?ch=fgetc(fp1); ? ?} ? ?fclose(fp1);/*關閉源文件*/ ? ?fclose(fp2);/*關閉目標文件*/ ? ?} }/*程序結束*/
添加回答
舉報
0/150
提交
取消