gpt4 book ai didi

c - 随机文本混淆算法失败

转载 作者:太空狗 更新时间:2023-10-29 17:01:18 31 4
gpt4 key购买 nike

我一直在试验一种简单的基于 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;
}

我怎样才能修正这个算法,使它确实是它自己的逆?有什么提高混淆级别的建议吗?

最佳答案

我在这里看到两个问题:

  1. 操作 + 0xfe 不是它自己的逆运算。如果将其删除并仅保留 XOR,则每个字节都将按预期恢复为原始值。

  2. 一个更微妙的问题:加密文本可能会产生一个零字节,这将截断文本,因为您使用了以 null 结尾的字符串。最好的解决方案可能是单独存储文本长度,而不是用 null 终止加密文本。

关于c - 随机文本混淆算法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518192/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com