简单加密UTF-8字符串,其结果是NULL终止字符串?

时间:2012-05-09 13:38:51

标签: c++ algorithm encryption

我想加密我发送给服务器上客户端的内容(不一定是出于安全考虑,只是为了防止有人轻易看到像Wireshark这样的数据)。

我正在寻找一种算法,其结果仍然是以NULL结尾的字符串,但可以非常快速,轻松地将其解密回utf-8字符串。我正在使用的网络库只允许我向客户端发送NULL终止字符串,这就是原因。我正在使用带有可靠数据包的UDP库。

有哪些算法可以做这类事情?

由于

3 个答案:

答案 0 :(得分:3)

Xor具有一些值(或另一个字符串)的所有字节。

在发送数据之前,将所有'\ 0'字符替换为0xff 0xfe,将所有0xff替换为0xff 0xff。 (显然你可以使用其他值)

接收数据时,反转过程 - 用0xff替换0xff 0xff,用0替换oxff 0xfe,然后用密钥替换xor。

或者,您可以对加密数据进行base64编码,以处理\0个字符。

答案 1 :(得分:0)

如果您想加扰数据,可以查找 Base64 编码, ROT13 HEX 编码的功能。

答案 2 :(得分:0)

如果您需要密文与明文相同,那么您需要从[1..255]到[1.255]的字符映射,这样您就可以执行类似

cipherbyte = ((clearbyte + keystreambyte) mod 255)+1

您确定[1..255]中的每个角色都有明确的路径吗?

如果你不介意大于明文的密文,那么你可以XOR(mod 256)并采用转义机制,例如SigTerm建议的内容。

注意在任何一种情况下,您都需要一些密钥流材料,并且必须决定一些关键的管理策略。阅读stream ciphers可能会给你一个良好的开端,请记住,使用相同的密钥两次相当于一遍又一遍地使用相同的编码(不是很强)。