gpt4 book ai didi

c++ - UTF-8 字符串的按位异或运算给出非 UTF-8 输出

转载 作者:行者123 更新时间:2023-11-30 03:32:21 24 4
gpt4 key购买 nike

我构建了一个基本的 XOR 加密程序,它使用 key 加密 .txt 文件。它工作正常,但我希望文件即使在加密后也只包含 UTF-8 字符。目前,在文本编辑器中查看时,我得到如下输出:

1GCh!/39hpj1GCCh
hpj1GjjCCCh!/3hpj~yGCC7fGGCChhpj1GjjCCCh!/3hpj~xGCC7fGGCChhpj1GjjCCCh!/3hpj~{GCC7fGGCChhpj1GjjCCCh!/3hpjyrGCC7fGGCChhpj1GjjCCCh!/3hpjyGCC7fGGCChhpj1GjjCCCh!/3hpjy|GCC7fGGCCh
hpj1GjjCCCh!/3hpjy}GCC7fGGCCh
hpj1GjjCCCh!/3hpj~zGCC7fGGCChhpj1GjjCCCh!/3hpjysGCC7fGGCChhpj1GjjCCCh!/3hpj{~GCC7fGGCChhpj1GjjCCCh!/3hpj{GCC7fGGCCh
hpj1GjjCCCh!/3hpj{|GCC7fGGCChhpj1GjjCCCh!/3hpj{}GCC7fGGCChhpj1GjjCCCh!/3hpjh=hGCC7fGGCChhpj1GjjCCCh!/3hpjh+hGCC7fGGCChhpj1GjjCCCh!/3hpjh9hGCC7fGGCCh
hpj1GjjCCCh!/3hpjh.hGCC7GC7G7G

这里有许多我认为是非 UTF 字符的结果。

是否可以执行按位异或运算以仅生成 UTF 字符?

作为引用,这是我的 crypt 函数:

static std::string XORCrypt(std::string key, std::string data) {
for (size_t i = 0; i != data.size(); i++) {
data[i] ^= key[i % key.size()];
}
return data;
}

最佳答案

当然,只需将更改的位限制为最低 3 位即可。这是 UTF-8 中唯一的位区域这对于所有有效的 UTF-8 代码单元都是任意的。

您可以通过扩展函数运行您的 key 以延长它以满足该要求。


而且,如果您将措辞从“加密”更改为“混淆”,我认为我们都会感觉更舒服。

关于c++ - UTF-8 字符串的按位异或运算给出非 UTF-8 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43518967/

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