2012-7-12可樂的对文件加密的源代…

#include "stdio.h"

void encryption(char buffer[],int file_size,int key);
void decryption(char buffer[],int file_size,int key);
void Process(int a);
int openSrcFile(char **buffer);
void saveDstFile(char *buffer,long file_size);
void menu();


main()
{
 char flag;
 menu();
 flag = getchar();
 getchar();
 while(flag != 'Q')
 {
  switch(flag)
  {
   case 'E':Process(0);break;
   case 'D':Process(1);break;
   default:printf("Input Error!\n");break;
  }
  flag = getchar();
  getchar();
 }
}

void menu()
{
 printf("*****************************************************************\n");
 printf(" =========A SIMPLE ENCRYPTION / DECRYPTION SYSTEM=========\n");
 printf("    ENCRYPTION press 'E'   DECRYPTION press 'D'   QUIT press 'Q'  \n" );
 printf("*****************************************************************\n");
}

int openSrcFile(char **buffer)
{
 FILE *myfile_src;   
 char filename[20];   
 long file_size;    
 printf("Please input the path and filename of the file you want to process\n");
 scanf("%s",filename);
 if(!(myfile_src = fopen(filename,"rb")))
 {
  printf("ERROR!");
 }
 fseek(myfile_src,0,SEEK_END);
 file_size = ftell(myfile_src);
 fseek(myfile_src,0,SEEK_SET);
 *buffer = (char *)malloc(file_size);
 fread(*buffer,1,file_size,myfile_src);  
 fclose(myfile_src);
 return  file_size;   
}

void saveDstFile(char *buffer,long file_size)
{
 FILE *myfile_dst;   
 char filename[20];   
 printf("Please input the path and filename of the file you have processed\n");
 scanf("%s",filename);
 if(!(myfile_dst = fopen(filename,"wb")))
 {
  printf("ERROR!");
 }
 fwrite(buffer,1,file_size,myfile_dst);
 printf("OK");
 fclose(myfile_dst);
}

void Process(int a)
{
 FILE *myfile_dst;
 char * buffer;
 int key;
 long file_size;     
 file_size = openSrcFile(&buffer);   
 printf("Please input the key (a integer) for encryption or decryption\n");
 scanf("%d",&key);    

 if(a == 0)
 {
  
  encryption(buffer,file_size,key);
 }
 else
 {
  
  decryption(buffer,file_size,key);
 }
 saveDstFile(buffer,file_size); 
}

void encryption(char buffer[],int file_size,int key)
{
 int i;
 for( i = 0; i < file_size; i++)
  buffer[i] = buffer[i] + key; 
}

void decryption(char buffer[],int file_size,int key)
{
 int i;
 for( i = 0; i < file_size; i++)
  buffer[i] = buffer[i] - key;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值