我试图计算8个字符的短的唯一的随机文件名,比方说,成千上万的文件,没有可能的名称碰撞。这种方法是否足够安全?
base64.urlsafe_b64encode(hashlib.md5(os.urandom(128)).digest())[:8]
更清楚地说,我正试图实现对上传到存储器的文件名进行最简单的混淆。
我发现,如果实施得当,8个字符的字符串,足够随机,将是非常有效和简单的方式来存储数以万计的文件,而不会出现可能的碰撞。我不需要保证唯一性,只需要有足够高的名称碰撞概率(只谈成千上万的名称)。
文件被存储在并发环境中,所以增加共享计数器是可以实现的,但很复杂。在数据库中存储计数器将是低效的。
我还面临着这样一个事实:随机()在某些情况下会返回相同伪随机序列在different processes.