文件加密的简单实现(C语言)

需求:以DWORD为单位对文件进行加密,将每个DWORD与0xfcba0000做异或,写入另一个文件

解答:
#include  < stdio.h >
#include 
< stdlib.h >

#define  DWORD unsigned long
#define  BYTE unsigned char 
#define  false 0
#define  true 1

int  main( int  argc,  char   * argv[])
{
  FILE 
*hSource;
  FILE 
*hDestination;
  
  DWORD dwKey
=0xfcba0000;

  
char* pbBuffer;
  DWORD dwBufferLen
=sizeof(DWORD);
  DWORD dwCount;
  DWORD dwData;

  
if(argv[1]==0||argv[2]==0)
  
{
    printf(
"missing argument!\n");
    
return false;
  }

  
char* szSource=argv[1];
  
char* szDestination=argv[2];
 
  hSource 
= fopen(szSource,"rb");// 打开源文件.
  hDestination = fopen(szDestination,"wb");    //打开目标文件

  
if (hSource==NULL) {printf("open Source File error !"); return false ;}
  
if (hDestination==NULL){ printf("open Destination File error !");  return false ;}
  
  
//分配缓冲区
  pbBuffer=(char* )malloc(dwBufferLen);
  
  
do {
    
// 从源文件中读出dwBlockLen个字节
    dwCount = fread(pbBuffer, 1, dwBufferLen, hSource);
    
//加密数据
    dwData = *(DWORD*)pbBuffer;  //char* TO dword
    dwData^=dwKey;        //xor operation
    pbBuffer = (char *&dwData;
    
// 将加密过的数据写入目标文件
    fwrite(pbBuffer, 1, dwCount, hDestination);
  }
 while(!feof(hSource));
 
    
//关闭文件、释放内存
     fclose(hSource);
     fclose(hDestination);
  
  printf(
"%s is encrypted to %s\n",szSource,szDestination);
  
return 0;
}

心得:
char*转DWORD:dwData = *(DWORD*)pbBuffer;
DWORD转char*: pbBuffer = (char *) &dwData;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值