文件的加密与解密操作指南
1、fseek,ftell,fread,fwrite(简单文件加密)
#define _CRT_SECURE_NO_WARNINGS //去掉安全检查
#include <stdio.h>
#include <stdlib.h>
/*读取文件大小*/
int getfilesize(char *path)
{
FILE *pf = fopen(path, "r");
if (pf == NULL)
{
fclose(pf);
return -1;
}
else
{
fseek(pf,0,SEEK_END);
int length = ftell(pf);
//获取文件大小
return length;
}
fclose(pf);
}
/*实现文件复制*/
void copy(char *oldpath,char *newpath)
{
FILE *pfr, *pfw;
//以打开二进制文件的方式打开
pfr = fopen(oldpath, "rb");
//写入二进制模式
pfw = fopen(newpath, "wb");
if (pfr == NULL || pfw == NULL)
{
fclose(pfr); //关闭文件
fclose(pfw);
return;
}
else
{
int length = getfilesize(oldpath);
//分配内存,读取文件
char *p = (char *)malloc(length * sizeof(char));
//读取二进制到内存
fread(p,sizeof(char),length,pfr);
//写入二进制到文件
fwrite(p,sizeof(char),length,pfw);
//关闭文件
fclose(pfr);
fclose(pfw);
}
}
void encryptyfile(char *oldpath,char *newpath)
{
FILE *pfr, *pfw;
pfr = fopen(oldpath, "rb");
//写入二进制模式
pfw = fopen(newpath, "wb");
if (pfr == NULL || pfw == NULL)
{
//关闭文件
fclose(pfr);
fclose(pfw);
return;
}
else
{
int length = getfilesize(oldpath);
//分配内存,读取文件
char *p = (char *)malloc(length*sizeof(char));
//读取二进制到内存
fread(p,sizeof(char),length,pfr);
for (int i = 0; i < length;i++)
{
//加密方法是,与制定字符进行异或操作
p[i] ^= 'A';
}
//写入二进制到文件
fwrite(p, sizeof(char), length, pfw);
//关闭文件
fclose(pfr);
fclose(pfw);
}
}
/*解密文件*/
void decodefile(char *oldpath,char *newpath)
{
FILE *pfr, *pfw;
pfr = fopen(oldpath, "rb");
//写入二进制模式
pfw = fopen(newpath,"wb");
if (pfr == NULL || pfw == NULL)
{
fclose(pfr);
fclose(pfw);
return;
}
else
{
int length = getfilesize(oldpath);
//分配内存,读取文件
char *p = (char *)malloc(length*sizeof(char));
//读取二进制到内存
fread(p,sizeof(char),length,pfr);
int i;
for (i = 0; i
上一篇:
如何使用.htaccess进行URL重写操作的疑问
下一篇:
用C语言打造可变的联系人管理器