最簡單的文件加解密算法

參考網帖。

調用一次爲加密,對已經加密的文件再調用一次爲解密。

#include <stdio.h>
#include <string.h>

bool EncodeDecodeFile(const char* sfilesrc, const char* sfiledst)
{
	if(NULL == sfilesrc || NULL == sfiledst)
	{
		return false;
	}

	bool ret = false;
	static const char *szpwd = "u010300403";
	static const int pwdlen  = strlen(szpwd);

	register char ch;
	FILE *fp1=fopen(sfilesrc,"rb");
	FILE *fp2=fopen(sfiledst,"wb");
	if(NULL != fp1 && NULL != fp2)
	{
		int pwdidx=0;
		fread(&ch,1,1,fp1);
		/*加密算法開始*/
		while(!feof(fp1))
		{
			ch = ch^szpwd[pwdidx>=pwdlen?pwdidx=0:pwdidx++];
			fwrite(&ch,1,1,fp2);/*異或後寫入fp2文件*/
			fread(&ch,1,1,fp1);
		}
		ret = true;
	}
	if(NULL != fp1)fclose(fp1);/*關閉源文件*/
	if(NULL != fp2)fclose(fp2);/*關閉目標文件*/
	return ret;
}

int main(int argc, char** argv)
{
	if(argc != 3)
	{
		FILE* perr = fdopen(2,"w+");
		fprintf(perr,"Usage:%s	srcfile		dstfile\n",argv[0]);
		fclose(perr);
		return 0;
	}
	EncodeDecodeFile(argv[1],argv[2]);
	return 1;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章