c语言之文件加密

来源:互联网 发布:虎视眈眈单人动作数据 编辑:程序博客网 时间:2024/06/05 06:47

功能:根据用户输入的路径和文件进行加密;
加密方式:按位“与”
附:因为时间缘故,解密部分还没有调试好;加密部分没有问题,文件经过加密之后成为了乱码。

#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 100#define LENGTH 10/******加密文件*******/void PasswdFile(char *s_file,char *o_passwd,char *d_file)    {     FILE *f_in,*f_out;      int i=0;     char ch;     f_in = fopen (s_file,"rb");     if (f_in == NULL)     {       perror ("fopen f_in error");       exit (EXIT_FAILURE);     }     f_out = fopen (d_file,"wb");     if (f_out == NULL)     {      perror ("fopen f_out error");      exit (EXIT_FAILURE);     }     //ch = fgetc(f_in);        /***可以采用ch = fgetc(f_in)!=EOF(针对文本文件)***/     while (!feof(f_in))          {           /**采用的是按位“与”的加密方式**/           ch = ch&*(o_passwd+i);             i++;           fputc (ch,f_out);           ch=fgetc(f_in);           if (i>9)           {            i=0;           }         }    fclose(f_in);    f_in=NULL;    fclose(f_out);    f_out=NULL;    }/******解密文件******/void UnpasswdFile(char *o_passwd)  //d_file 为加密后的文件    {      FILE *r_fp = NULL;      FILE *w_fp = NULL;      int i=0;      char ch;      r_fp = fopen("f:\2.txt","rb");      if (!r_fp)      {       printf ("fopen error\n");       exit (EXIT_FAILURE);      }      w_fp = fopen ("f:\uncode.txt","wb");      if (!w_fp )      {       printf ("fopen error\n");       exit (EXIT_FAILURE);      }      ch = fgetc(r_fp);      while (!feof(r_fp))          {            ch = ch^*(o_passwd+i);            i++;            fputc (ch,w_fp);            ch=fgetc(r_fp);            if (i>9)            {             i=0;            }          }      fclose(r_fp);      r_fp=NULL;      fclose(w_fp);      w_fp=NULL;      printf ("你的文件经过解密保存到了f:\uncode.txt\n");    }/****菜单****/void Menu()    {    puts (" ----------------------");    puts (" ----------------------");    puts ("   欢迎使用文件加密");    puts ("  Y:加密   N:解密");    puts ("  E:退出");    puts (" ----------------------");    puts (" ----------------------");    }int main(int argc,char **argv)   {   char sourcefile[MAX];   char destfile[MAX];   char passwd[LENGTH];   memset (sourcefile,0,sizeof(sourcefile));   memset (destfile,0,sizeof(destfile));   memset (passwd,0,sizeof(passwd));   Menu();   puts ("请输入待加密的文件路径和文件名:");   gets (sourcefile);   puts ("请输入你的加密密码:");   gets (passwd);   puts ("请输入你加密后所保存的路径和文件名:");   gets (destfile);   PasswdFile (sourcefile,passwd,destfile);   //UnpasswdFile (passwd);    system("pause");    return 0;   }
1 0
原创粉丝点击