Lua os.tempname 暂时文件名

Lua os.tempname 函数返回的文件名在两个方面都较为不安全:

  1. 与大多数其他编程语言不同,无法自定义文件名的前缀。
  2. 生成的 _6char 后缀可以通过暴力破解猜测。

我有时会使用加盐的当前时代时间+随机数的 MD5 值作为文件名。仅有一个“感觉”更好的原因是文件名字符串的长度。

是否有一种生成更好(即更长?)文件名的方法?

点赞
用户1881196
用户1881196
  1. 这个 Lua 函数的目的仅仅是提供一个独特的名字。
  2. 标准的 Lua 库中没有太多的选项。

换句话说,无论你是使用 Lua 中提供的内容,还是自己编写函数,选择并不多。但是,即使使用哈希、随机数等,你仍然面临概率的问题:在这种情况下,该文件可能会存在重名问题,因为操作系统无法保证其唯一性。

顺便提一下,应该考虑使用 io.tmpfile 而不是 os.tmpname

2015-06-20 19:43:16