Simple file encryption C language code implementation

The encryption algorithm encrypts each character of the original text by XOR operation; when decrypting, XOR processing is also performed to restore the original text.

The code is implemented as follows

#include<stdlib.h>
#include <stdio.h>

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

Guess you like

Origin blog.csdn.net/L888666Q/article/details/129295532