古詩詞大全網 - 個性簽名 - C語言 文件加密解密

C語言 文件加密解密

加密:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

void dofile(char *in_fname,char *pwd,char *out_fname);/*對文件進行加密的具體函數*/

void main(int argc,char *argv[])/*定義main()函數的命令行參數*/

{

char in_fname[30];/*用戶輸入的要加密的文件名*/

char out_fname[30];

char pwd[8];/*用來保存密碼*/

if(argc!=4){/*容錯處理*/

printf("\nIn-fname:\n");

gets(in_fname);/*得到要加密的文件名*/

printf("Password:\n");

gets(pwd);/*得到密碼*/

printf("Out-file:\n");

gets(out_fname);/*得到加密後妳要的文件名*/

dofile(in_fname,pwd,out_fname);

}

else{/*如果命令行參數正確,便直接運行程序*/

strcpy(in_fname,argv[1]);

strcpy(pwd,argv[2]);

strcpy(out_fname,argv[3]);

dofile(in_fname,pwd,out_fname);

}

}

/*加密子函數開始*/

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);/*關閉目標文件*/

}

/*程序結束*/