使用共享密钥的Lua加密

我一直在使用这个开源函数通过 base64 方法加密和解密字符串,我想知道是否有一种方法可以让我和一些朋友共享一个特定的“密钥”,以使只有拥有这个“密钥”的人才能正确地加密或解密消息。

那么,假设类似这样的一个函数被给予我和三个朋友,并且我们都有一个名为“flibble”的私人字符串密钥...那么我们如何分享不能被其他人解密的消息呢?

点赞
用户589259
用户589259

不,不是使用 base64。Base64不是加密,而是编码。Base64 不会将密钥作为参数,它只是将二进制转换为可打印的 ASCII。

当然,你可以使用一些技巧,让 base64 看起来更像密文:只需要放入一个混淆的字母表(在你的示例中使用变量 b)。但这只是常见的替换方式;因此,应将其视为混淆而不是加密。我可以向任意一个高中学生解释如何破解它。

一般来说,你需要首先使用块密码 + 操作模式进行加密,然后再执行编码。你需要类似 AES 这样的算法来提供机密性,而需要类似 HMAC 来保证消息的完整性和真实性。

我建议你使用 luacrypto 这样的工具。你真的不想使用像 Lua 这样的高级语言来执行加密,这是出于性能的原因。许多 Lua 库只提供 AES 或 HMAC,但不提供两者以上的算法,而且许多似乎是个人项目,而非得到良好支持/维护的库——因此请慎重选择。

2015-04-18 11:56:44