import hashlib
import random
def generate_id():
# Generate a random number
random_num = str(random.randint(0, 99999999)).encode()
# Generate a SHA-256 hash of the random number.
hash_obj = hashlib.sha256(random_num)
hex_digit = hash_obj.hexdigest()
return hex_digit[:10]
2条答案
按热度按时间kwvwclae1#
具体取决于您需要多少个ID、创建它们的速度、它们是否必须仅在您的计算机上唯一或在多台计算机上唯一、要允许哪些字符(仅数字、字母数字等)等。生成唯一ID并非易事。
几个想法:
0000000000
开始,通过递增一直到zzzzzzzzzz
。但是,ID的随机性越大,对输出的控制就越少,因此需要检查冲突,特别是当生成的ID数量相对于可能的ID数量很大时。
所以说到底,(在一定范围内)* 保证 * 唯一性只有两种方法
1.检查新创建的id是否以前已发布
1.由一个无冲突函数计算,并且您可以控制该函数的输入不能使用两次(例如,在您生成每个id后增加输入)
eni9jsuy2#
尝试使用hashlib模块,以便: