I wrote a C program to perform an XOR encryption, my problem is that the program is not able to encrypt files with more than 24 characters.
The code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define BUF_SIZE  2
char* xor(char*, char*);
char* gen_key(size_t);
int main(int argc, char **argv) {
    char *buffer = NULL,* encrypted_buffer = NULL;
    size_t file_size;
    char *key = gen_key(6);
    char tmp_buffer[BUF_SIZE];
    FILE *finput = NULL, *foutput = NULL;
    finput = fopen("file.txt", "rb");
    fseek(finput, 0, SEEK_END);
    file_size = ftell(finput);
    rewind(finput);
    printf("File size : %d\n", (int)file_size);
    buffer = (char*)malloc((file_size + 1) * sizeof(char));
    memset(buffer, 0, sizeof(buffer));
    while (!feof(finput)) {
        memset(tmp_buffer, 0, sizeof(tmp_buffer));
        fgets(tmp_buffer, sizeof(tmp_buffer), finput);
        strcat(buffer, tmp_buffer);
    }
    printf("%s", buffer);
    encrypted_buffer = xor(buffer, key);
    free(buffer);
    buffer = xor(encrypted_buffer, key);
    printf("Encrypted : %s\n", encrypted_buffer);
    printf("Decrypted : %s\n", buffer);
    printf("EOF\n");
    free(encrypted_buffer);
    fclose(finput);
    return 0;
}
char *gen_key(size_t length) {
    srand(time(NULL));
    const char charset[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz012345679";
    const size_t charset_size = (sizeof(charset) - 1);
    unsigned int i;
    char *key = NULL;
    key = (char*)malloc((length + 1) * sizeof(char));
    memset(key, 0, sizeof(key));
    for (i = 0; i < length; i++)
        key[i] = charset[rand() % charset_size];
    return key;
}
char *xor(char *file, char *key) {
    unsigned int i;
    char *xor = NULL;
    xor = (char*)malloc(sizeof(file));
    memset(xor, 0, sizeof(xor));
    for (i = 0; i < strlen(file); i++)
        *(xor + i) = *(file + i) ^ *(key + (i % strlen(key) - 1));
    return xor;
}
And the output is :
File size : 55
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklimnopqrstuvwxyz
Encrypted : A2#G8-  M   >7S$1!
Decrypted : ABCDEFGHIJKLMNOPQRSTUVWX!:!e!
EOF
 
    