Я экспериментировал с простым алгоритмом обфускации текста на основе XOR.Предположительно, когда алгоритм запускается дважды подряд, я должен получить исходные данные - но в моей реализации это происходит только иногда.Вот мой код со случайным текстом, демонстрирующим проблему:
#include <stdio.h>
void obfuscate(char *text) {
char i = 0, p = 0;
while (text[i] != 0) {
text[i] = (text[i] ^ (char)0x41 ^ p) + 0xfe;
p = i++;
}
}
int main(int argc, char **argv) {
char text[] = "Letpy,Mprm` Nssl'w$:0==!";
printf("%s\n", text);
obfuscate(text);
printf("%s\n", text);
obfuscate(text);
printf("%s\n", text);
return 0;
}
Как я могу исправить этот алгоритм, чтобы он действительно был обратным?Любые предложения по улучшению уровня запутывания?