如何在lua中将字节转换为字符串

好的,所以我在lua中做了一个简单的加密,但是它返回的是奇怪的字符而不是正常的字符

这是我的代码:

local function strenc(message, key)
local key_bytes
if type(key) == "string" then
    key_bytes = {}
    for key_index = 1, #key do
        key_bytes[key_index] = string.byte(key, key_index)
    end
else
    key_bytes = key
end
local message_length = #message
local key_length = #key_bytes
local message_bytes = {}
for message_index = 1, message_length do
    message_bytes[message_index] = string.byte(message, message_index)
end
local result_bytes = {}
local random_seed = 0
for key_index = 1, key_length do
    random_seed = (random_seed + key_bytes[key_index] * key_index) * 37789 + 60061
    random_seed = (random_seed - random_seed % 256) / 256 % 65536
end
for message_index = 1, message_length do
    local message_byte = message_bytes[message_index]
    for key_index = 1, key_length do
        local key_byte = key_bytes[key_index]
        local result_index = message_index + key_index - 1
        local result_byte = message_byte + (result_bytes[result_index] or 0)
        if result_byte > 255 then
            result_byte = result_byte - 256
        end
        result_byte = result_byte + key_byte
        if result_byte > 255 then
            result_byte = result_byte - 256
        end
        random_seed = (random_seed * 37789 + 60061) % 65536
        result_byte = result_byte + (random_seed - random_seed % 256) / 256
        if result_byte > 255 then
            result_byte = result_byte - 256
        end
        result_bytes[result_index] = result_byte
    end
end
local result_characters = {}
local result_next_index = 1
for result_index = 1, #result_bytes do
    local result_byte = result_bytes[result_index]
    if result_byte == 0 then
        result_characters[result_next_index] = "\1"
        result_characters[result_next_index + 1] = "\1"
        result_next_index = result_next_index + 2
    elseif result_byte == 1 then
        result_characters[result_next_index] = "\1"
        result_characters[result_next_index + 1] = "\2"
        result_next_index = result_next_index + 2
    else
        result_characters[result_next_index] = string.char(result_byte)
        result_next_index = result_next_index + 1
    end
end
return table.concat(result_characters) end

我不知道该如何改变它,如果我这样做 strenc("test", "test")它会输出"��<��H�",我无法解密,如果我试图解密它,它将输出"�u�z[��B��",这根本不正确,我很迷失。

点赞