1. 实现了简单的数据缓冲区异或加密
    2. malloc函数好像未判断失败,可以完善下
    1. void pycrypt_enxor(char* data, size_t n_data, const char* key, size_t n_key) {
    2. char* p = malloc(n_key);
    3. memcpy(p, key, n_key);
    4. size_t n_res_size = n_data % n_key;
    5. char* data_loop_bound = data + n_data - n_res_size;
    6. size_t i = 0;
    7. for (; data < data_loop_bound; data += n_key) {
    8. for (i = 0; i < n_key; ++i) {
    9. data[i] ^= p[i];
    10. p[i] = data[i];
    11. }
    12. }
    13. for (i = 0; i < n_res_size; ++i) {
    14. data[i] ^= key[i];
    15. p[i] = data[i];
    16. }
    17. free(p);
    18. }
    19. void pycrypt_dexor(char* data, size_t n_data, const char* key, size_t n_key) {
    20. char* p = malloc(n_key);
    21. memcpy(p, key, n_key);
    22. size_t n_res_size = n_data % n_key;
    23. char* data_loop_bound = data + n_data - n_res_size;
    24. size_t i = 0;
    25. for (; data < data_loop_bound; data += n_key) {
    26. for (i = 0; i < n_key; ++i) {
    27. char c = data[i];
    28. data[i] ^= p[i];
    29. p[i] = c;
    30. }
    31. }
    32. for (i = 0; i < n_res_size; ++i) {
    33. data[i] ^= key[i];
    34. p[i] = data[i];
    35. }
    36. free(p);
    37. }