#include <stdlib.h>
#include <string.h>

char *string_crypt(const char *input, int len, const char *key) {
    char *output;
    int i, n;

    if (input == NULL) return NULL;

    output = malloc(len + 1);
    output[len] = '\0';

    for (i = 0, n = 0; i < len; i++, n++) {
        if (key[n] == '\0') n = 0;
        output[i] = input[i] ^ key[n];
    }

    return output;
}

void string_crypt_free(char *output) {
    if (output != NULL) free(output);
}