文件加密码

来源:互联网 发布:淘宝怎么设置限购5件 编辑:程序博客网 时间:2024/05/21 12:08

文件的获取大小与文件的密码都需要注意 使用 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-->\nvoid 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");}


0 0
原创粉丝点击