我想加密我在服务器上发送给客户端的内容(不一定是为了安全,只是为了防止有人轻易看到 Wireshark 之类的数据)。
我正在寻找一种算法,其结果仍然是一个以 NULL 结尾的字符串,但可以非常快速轻松地解密回 utf-8 字符串。我使用的网络库只允许我向客户端发送 NULL 终止的字符串,这就是原因。我正在使用带有可靠数据包的 UDP 库。
有哪些算法可以做这种事情?
谢谢
我想加密我在服务器上发送给客户端的内容(不一定是为了安全,只是为了防止有人轻易看到 Wireshark 之类的数据)。
我正在寻找一种算法,其结果仍然是一个以 NULL 结尾的字符串,但可以非常快速轻松地解密回 utf-8 字符串。我使用的网络库只允许我向客户端发送 NULL 终止的字符串,这就是原因。我正在使用带有可靠数据包的 UDP 库。
有哪些算法可以做这种事情?
谢谢
异或具有某个值(或另一个字符串)的所有字节。
在发送数据之前,将所有 '\0' 字符替换为 0xff 0xfe 并将所有 0xff 替换为 0xff 0xff。(显然,您可以使用其他值)
接收数据时,逆向处理——用 0xff 替换 0xff 0xff,用 0 替换 oxff 0xfe。然后用 key 异或。
或者,您可以对加密数据进行 base64 编码以处理\0
字符。
如果你想打乱你的数据,你可以寻找进行Base64编码、ROT13或HEX编码的函数。
如果您需要密文与明文大小相同,则需要从 [1..255] 到 [1.255] 的字符映射,因此您可以执行类似的操作
cipherbyte = ((clearbyte + keystreambyte) mod 255)+1
您确定 [1..255] 中的每个角色都有明确的路径吗?
如果您不介意密文大于明文,那么您可以 XOR(mod 256)并采用 SigTerm 建议的转义机制。
请注意,无论哪种情况,您都需要一些密钥流材料,并且必须决定一些密钥管理策略。阅读流密码可能会给您一个良好的开端,请记住,两次使用相同的密钥等同于一遍又一遍地使用相同的编码(不是很强大)。