#include <stdio.h>
#include <sys/ioctl.h>
#include <string.h>
/***********************************
文件cpy改进,文件加密,对文件两次运算可解密
************************************/
int main(int argc, char const *argv[])
{
FILE *fd_old;
FILE *fd_new;
long offset_1;
long offset_2;
char buf[1024];
fd_old = fopen(argv[1],"r+");//打开文件
fd_new = fopen(argv[2],"w+");
//打开文件,如果没有就创建文件
if (fd_old == NULL || fd_new == NULL)
{
perror("error");
return 0;
}
while(1)
{
memset(buf,0,sizeof(buf));//清空缓存数组
offset_1 = ftell(fd_old);//获取文件偏移量
if(fread(buf,1024,1,fd_old)<1)//如果读取数据块小于一块
{
if(feof(fd_old))//文件到了末尾
{
offset_2 = ftell(fd_old);//获取文件末尾的偏移量
for (int i = 0; i < (offset_2-offset_1); ++i)
{
buf[i]=buf[i]^65;//进行异或加密
}
fwrite(buf,offset_2-offset_1,1,fd_new);
//写入文件最后小于一个数据块的数据
break;
}
}
else
{
for (int i = 0; i < 1024; ++i)
{
buf[i]=buf[i]^65;//进行异或加密
}
fwrite(buf,1024,1,fd_new);
//如果文件获得的数据大于一个数据块,就直接写入
}
}
fclose(fd_old);//关闭文件
fclose(fd_new);
return 0;
}
文件cpy改进,文件加密,对文件两次运算可解密,密码65
猜你喜欢
转载自blog.csdn.net/qq_42723835/article/details/81412024
今日推荐
周排行