Encryption 如何检索密码,以便以后可以安全地从内存中删除?

Encryption 如何检索密码,以便以后可以安全地从内存中删除?,encryption,passwords,lua,Encryption,Passwords,Lua,如何从Lua中的用户输入中检索密码,以便在程序使用密码完成后可以安全地从内存中删除密码 以下是以下内容: 如何在lua中将密码转换为十六进制 一个简单的例子是: “通过”变为{0x70,0x61,0x73,0x73} 你说的“十六进制”是什么意思?是否要将pass转换为包含#pass*2十六进制字符的字符串?那么你想要这个: function toHex(s) return (string.gsub(s, ".", function (c) return string.f

如何从Lua中的用户输入中检索密码,以便在程序使用密码完成后可以安全地从内存中删除密码

以下是以下内容:

如何在lua中将密码转换为十六进制

一个简单的例子是:

“通过”变为{0x70,0x61,0x73,0x73}

你说的“十六进制”是什么意思?是否要将
pass
转换为包含
#pass*2
十六进制字符的字符串?那么你想要这个:

function toHex(s)
    return (string.gsub(s, ".", function (c)
        return string.format("%02X", string.byte(c))
      end))
end
print(toHex('password')) --> 70617373776F7264
function toBytes(s)
    return {string.byte(s, 1, #s)}
end
print(table.concat(toBytes('password'), ',')) --> 112,97,115,115,119,111,114,100
或者您想要一个数字表,其中每个数字都是一个字符代码(字节)?那么你想要这个:

function toHex(s)
    return (string.gsub(s, ".", function (c)
        return string.format("%02X", string.byte(c))
      end))
end
print(toHex('password')) --> 70617373776F7264
function toBytes(s)
    return {string.byte(s, 1, #s)}
end
print(table.concat(toBytes('password'), ',')) --> 112,97,115,115,119,111,114,100
你说的“十六进制”是什么意思?是否要将
pass
转换为包含
#pass*2
十六进制字符的字符串?那么你想要这个:

function toHex(s)
    return (string.gsub(s, ".", function (c)
        return string.format("%02X", string.byte(c))
      end))
end
print(toHex('password')) --> 70617373776F7264
function toBytes(s)
    return {string.byte(s, 1, #s)}
end
print(table.concat(toBytes('password'), ',')) --> 112,97,115,115,119,111,114,100
或者您想要一个数字表,其中每个数字都是一个字符代码(字节)?那么你想要这个:

function toHex(s)
    return (string.gsub(s, ".", function (c)
        return string.format("%02X", string.byte(c))
      end))
end
print(toHex('password')) --> 70617373776F7264
function toBytes(s)
    return {string.byte(s, 1, #s)}
end
print(table.concat(toBytes('password'), ',')) --> 112,97,115,115,119,111,114,100

谢谢你的回复。但我的意思是基本上在lua中创建一个“char”表。它应该在使用后归零,从而将其从内存中删除,从而无法检索密码。由于lua使用不可变字符串,这是一个问题,因为它可以“轻松”检索。表是“可变的”,因此选择表是有原因的。但我不能使用字符串。我希望它能澄清一点。它来自下面的主题。然后你会想使用第二种形式的变体。请注意,重要的是用户如何输入密码-如果您使用简单的从stdin读取,除非您按字节读取,否则您将在内存中拥有字符串。是的,这也是一个问题。但是谢谢你的解决方案。我会试试的。谢谢你的回复。但我的意思是基本上在lua中创建一个“char”表。它应该在使用后归零,从而将其从内存中删除,从而无法检索密码。由于lua使用不可变字符串,这是一个问题,因为它可以“轻松”检索。表是“可变的”,因此选择表是有原因的。但我不能使用字符串。我希望它能澄清一点。它来自下面的主题。然后你会想使用第二种形式的变体。请注意,重要的是用户如何输入密码-如果您使用简单的从stdin读取,除非您按字节读取,否则您将在内存中拥有字符串。是的,这也是一个问题。但是谢谢你的解决方案。我会试试看。