Lua os.tempname

Lua os.tempname

Lua os.tempname 函数返回的文件名有两个弱点

  1. 与大多数其他语言不同,无法为文件名定义自定义前缀
  2. 生成的_6char后缀虽然可以用蛮力,但仍然可以被猜到

我有时会使用当前纪元时间的加盐 MD5 + 随机数。 "feels" 喜欢更好的解决方案的唯一原因是文件名字符串的长度。

有没有办法生成更好的(= 更长?)文件名?

  1. 这个Lua函数的目的是提供一个唯一名称。
  2. 标准 Lua 库中的选项不多。

换句话说,要么使用 Lua 中可用的功能,要么编写自己的函数。然而,即使您使用散列、随机数等,您仍然在处理概率:这样的文件可能存在,因为在这种情况下 OS 不能保证唯一性。

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