简单的文件加密C语言代码实现

加密算法通过对原文的每个字符进行异或运算来进行加密;解密时同样进行异或处理即可恢复到原文。

代码实现如下

#include
#include 

int getfilesize(char *path)
{ 
    FILE *pf = fopen(path, "r");
    if (pf == NULL)
    { 
        return -1;
    }
    else
    { 
        fseek(pf, 0, SEEK_END);
        int length = ftell(pf);
        return length;
    }
}

void EncryptFile(char *oldpath, char *newpath)
{ 
    int i = 0;
    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 (i = 0; i < length; i++)
        { 
            p[i] ^= 'A';
        }
        fwrite(p, sizeof(char), length, pfw);
        fclose(pfr);
        fclose(pfw);
    }
}
void DecryptFile(char *oldpath, char *newpath)
{ 
    int i = 0;
    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 (i = 0; i < length; i++)
        { 
            p[i] ^= 'A';
        }
        fwrite(p, sizeof(char), length, pfw);
        fclose(pfr);
        fclose(pfw);
    }
}
#if 0
void main()
{           
    // 原始文件的路径
    char *oldpath = "log.txt";
    // 加密后的路径
    char *newpath = "log-EecryptFile.dat";
    // 解密后的路径
    char *newDecryptFilepath = "log-DecryptFile.txt";
    EncryptFile(oldpath, newpath);
    DecryptFile(newpath, newDecryptFilepath);
}
#endif

你可能感兴趣的:(c/c++,安全,c语言,算法)