文件加密之異或加密(C++實現)


#include <iostream>
#include <fstream>
#include <string.h> 
using namespace std;


//加密函數
void Encryption(char *in_fname,char *out_fname,char *pwd)
{
FILE *in_file,*out_file;
register char ch;
int x;
x=strlen(pwd);
in_file=fopen(in_fname,"rb");//以讀的方式打開二進制文件
if(in_file==NULL)//如果打開失敗

cout<<"Open file error"; 
exit(1);

out_file=fopen(out_fname,"wb");//以寫的方式打開二進制文件
if(out_file==NULL)//如果創建失敗
{
cout<<"Create file error";
exit(1);
}


//一下兩斷注釋代碼,要選其一進行使用
/*
這一斷注釋代碼的功能是只對文件的前幾位加密,可以提高讀寫速度,主要用於視頻、音頻文件,因為只要這類文件的前幾位一經修改,是無法正常播放的。
ch=fgetc(in_file); 
for(int i=0;i<=x;i++)
{
fputc(ch^pwd[i],out_file); //fputc函數是向文件寫入一位字符
ch=fgetc(in_file); //fgetc()函數是得到文件的一個字符,會自動使指針后移一位
}
while(!feof(in_file))
{
fputc(ch,out_file);
ch=fgetc(in_file); 
}
*/




/*
這一斷注釋代碼的功能是對文件的所有位加密,主要用於文本文件。
  while(!feof(in_file))
{
fputc(ch^pwd[i>=x?i=0:i++],out_file);
ch=fgetc(in_file); 
}
*/
fclose(in_file);
fclose(out_file);
}


void main()

char in_fname[30],out_fname[30],pwd[30];
cout<<"Please input file name which you want to be encrypted:"<<endl;//輸入想要加密文件的文件名
cin>>in_fname;
cout<<"Please input file name which which will be output:"<<endl;//輸出加密后文件的文件名
cin>>out_fname;
cout<<"Please input password:"<<endl;//輸入密碼
cin>>pwd;
Encryption(in_fname,out_fname,pwd);//調用加密函數
cout<<"Success!"<<endl;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM