欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

文件的加密与解密操作指南

最编程 2024-07-27 19:25:27
...


1fseek,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语言打造可变的联系人管理器