python - 足够安全的 8 字符短唯一随机字符串

标签 python hash random cryptography

我正在尝试为数以千计的文件计算 8 个字符的短唯一随机文件名,而不会发生可能的名称冲突。这种方法够安全吗?

base64.urlsafe_b64encode(hashlib.md5(os.urandom(128)).digest())[:8]

编辑

为了清楚起见,我正在尝试对上传到存储的文件名进行最简单的混淆。

我发现 8 个字符的字符串,足够随机,如果实现得当,将是一种非常有效且简单的方式来存储数万个文件而不会发生冲突。我不需要保证唯一性,只需要足够高的名称冲突可能性(仅谈论数千个名称)。

文件存储在并发环境中,因此增加共享计数器是可以实现的,但很复杂。将计数器存储在数据库中会效率低下。

我还面临这样一个事实,即 random() 在某些情况下会在 不同 进程中返回 same 伪随机序列。

最佳答案

您当前的方法应该足够安全,但您也可以查看 uuid模块。例如

import uuid

print str(uuid.uuid4())[:8]

输出:

ef21b9ad

关于python - 足够安全的 8 字符短唯一随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484726/

相关文章:

python - 通过 tf-idf 特征选择重用 sklearn 文本分类模型

python - SQLAlchemy 实例更简洁的初始化

python - 循环绘图(使用 basemap 和 pyplot)....pyplot.clf() 的问题

python - 时间延迟 Tkinter

MySQL分区。分区函数返回错误类型

python-3.x - n_gram 模型 HashingVectorizer 并将其与 keras 一起使用

javascript - 如何使用 javascript 从一组 100 个中生成 10 个唯一的随机数?

Javascript 将对象打包为哈希字符串

python - 选择随机验证数据集

algorithm - 我什么时候应该编写自己的随机数算法而不是使用常用的数学函数?