- 实现了简单的数据缓冲区异或加密
- malloc函数好像未判断失败,可以完善下
void pycrypt_enxor(char* data, size_t n_data, const char* key, size_t n_key) {
char* p = malloc(n_key);
memcpy(p, key, n_key);
size_t n_res_size = n_data % n_key;
char* data_loop_bound = data + n_data - n_res_size;
size_t i = 0;
for (; data < data_loop_bound; data += n_key) {
for (i = 0; i < n_key; ++i) {
data[i] ^= p[i];
p[i] = data[i];
}
}
for (i = 0; i < n_res_size; ++i) {
data[i] ^= key[i];
p[i] = data[i];
}
free(p);
}
void pycrypt_dexor(char* data, size_t n_data, const char* key, size_t n_key) {
char* p = malloc(n_key);
memcpy(p, key, n_key);
size_t n_res_size = n_data % n_key;
char* data_loop_bound = data + n_data - n_res_size;
size_t i = 0;
for (; data < data_loop_bound; data += n_key) {
for (i = 0; i < n_key; ++i) {
char c = data[i];
data[i] ^= p[i];
p[i] = c;
}
}
for (i = 0; i < n_res_size; ++i) {
data[i] ^= key[i];
p[i] = data[i];
}
free(p);
}