C++文件操作 更改文件前后1024字节数据
主要想实现文件的破坏和恢复功能,程序执行一次文件破坏,再执行一次文件恢复正常......
比如有一大于1M的任意后缀格式的文件,如何更改该文件前后512字节数据,更改操作可以是取反或者与或等等。希提供实例代码帮助理解,谢谢。 C++?文件操作
[解决办法]
#include <stdio.h>
bool __stdcall CrnEncryptFile(LPSTR lpFileName)
{
// 以二进制读写方式打开文件
FILE *fp = fopen(lpFileName, "rb+");
if (!fp) return false;
// 获取文件大小,如果小于1MB就不进行加密,这个地方自己根据需求修改
fseek(fp, 0, SEEK_END);
long lSize = ftell(fp);
if (lSize < 1048576) return false;
// 从文件头部读取512个字节
BYTE btBuffer[512];
fseek(fp, 0, SEEK_SET);
fread(btBuffer, 1, 512, fp);
// 对缓冲中的数据进行加密运算
for (int i = 0; i < 512; i++)
{
btBuffer[i] ^= 0xc2;
}
// 再写回文件头部
fseek(fp, 0, SEEK_SET);
fwrite(btBuffer, 1, 512, fp);
// 从文件尾部读取512个字节
fseek(fp, -512, SEEK_END);
fread(btBuffer, 1, 512, fp);
// 对缓冲中的数据进行加密运算
for (int i = 0; i < 512; i++)
{
btBuffer[i] ^= 0xc2;
}
// 再写回文件尾部
fseek(fp, -512, SEEK_END);
fwrite(btBuffer, 1, 512, fp);
// 关闭文件
fclose(fp);
return true;
}