lua aes加密

use*_*431 2 encryption lua aes

我刚才在网上找到了"lua aes"解决方案.并对其安全性表示担忧.

它指出:

- 不要用于真正的加密,因为加密时可以轻松查看密码.

它在"文件加密测试"脚本中说这个.

我的问题是:

为什么会这样,加密字符串并将其写入文件有什么不同?

如何在加密时查看?加密后它是否可见?

基本上,使用与否是安全的吗?

是否有人可以确认使用过它的人?我邮寄了原始开发者,但电子邮件地址无效.

我应该使用它吗?

Pet*_* O. 7

我假设有两个原因可以提出这个建议:

  1. 字符串在Lua中是不可变的,因此一旦创建了字符串,就无法用不同的数据覆盖它.
  2. 在Lua中,对象是垃圾收集的.垃圾收集器仅在程序中的某些点运行,并且应用程序无法告知垃圾收集器何时在没有对该对象的引用之后运行.在此之前,密码字符串将在第1点保留在内存中.

参见Java的案例,类似于Lua:

为什么char []比字符串更适合密码?

正如您所看到的,使用char数组而不是字符串是存储密码的更好方法,因为数组是可变的,并且在完成后可以重新初始化为零.

char数组最接近的Lua 是一个填充数字的表.这里密码存储为表而不是字符串,其中表中的每个元素由每个字符的整数表示组成.例如,"pass"成为{0x70,0x61,0x73,0x73}.在使用包含密码的表进行加密或解密之后,在程序无法访问之前,它会被零填充,并最终被垃圾收集.


根据你的评论,我可能误会了.也许"文件加密测试"将密码与加密文件一起以纯文本形式存储,允许任何有权访问该文件的人,甚至是攻击者,都可以轻易地解密它.不过,上述几点仍然适用.然而,这仍然是一个猜测; 除非您提供指向您提到的加密库的链接,否则我无法确切地知道您的意思.


我已经看了AES库,并且密码被"容易查看"的问题发生了,因为用户通过命令行或终端以纯文本键入密码,以便启动Lua程序,即使程序的输出仅包含密文.提供密码的稍微更安全的方式不是显示输入(如在中所示sudo)或用点或星号掩盖输入(如在许多网页中所做的那样).

无论是上面给出的点还是上面给出的点也许是唯一合乎逻辑的解释.

  • 这两篇论文:[_Data Lifetime是一个系统问题_](http://xenon.stanford.edu/~talg/papers/SIGOPS04/abstract.html),[_Shredding Your Garbage:通过安全释放减少数据生命周期_](http ://www.usenix.org/event/sec05/tech/chow.html)可能对那些想要了解更多问题以及有些人试图解决问题的人感兴趣. (2认同)