文件加密码

文件的获取大小与文件的密码都需要注意 使用 int ch = fgetc(); 这样可以避免因加密或解密造成的溢出,损坏文件。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//加密码最好使用 二进制,否则会出现一些问题。
//这儿的 获取字符也应该使用 int ch = fgetc(pfr); 使用 int 类型而不要使用 char .

//还有一个需要注意的地方就是:\n 在写到文件中是变成 \n-->\r\n, 而 \n读出来的又是 \r\n-->\n


void jiajiepass(char *path, char *newpath, char *pw)
{
	FILE *pfr = fopen(path, "rb");
	FILE *pfw = fopen(newpath, "wb");
	if (pfr == NULL || pfw == NULL)
	{
		printf("文件读取或打开失败!\n");
		return;
	}
	int length = strlen(pw);
	int i = 0;
	int ch;		//不要使用 char 类型,否则会出错。
	while ((ch=fgetc(pfr))!=EOF)
	{
		if (i > length)
			i = 0;		
		fputc(ch^pw[i], pfw);
	}
	fclose(pfr);
	fclose(pfw);
}

int getFileSize(char *path)
{
	FILE *pfr = fopen(path, "rb");
	
	if (pfr == NULL )
	{
		printf("打开失败!\n");
		return -1;
	}
	int sum = -1; //这儿的用 -1 是因为文件最后的一个EOF 也计算在内了。
	
	while (!feof(pfr))
	{
		int ch = fgetc(pfr);	//这儿一定要使用 int 
		sum++;
	}
	return sum;
}


char *path = "I:\\fudan\\工具\\dllinject\\DllInject.exe";
char *pathjia = "I:\\fudan\\工具\\dllinject\\DllInjectjia.exe";
char *pathjie = "I:\\fudan\\工具\\dllinject\\DllInjectjie.exe";
char *pw = "password";


void main()
{

	//printf("%d\n", getFileSize(path));
	char password[20];
	printf("请输入加密、解密密码:");
	scanf("%s", password);
	printf("加密中...\n");
	jiajiepass(path, pathjia, password);
	printf("解密中...\n");
	jiajiepass(pathjia, pathjie, password);
	system("pause");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值