naiher (@naihe) 在 抽奖工具生成seed另类方式 中发帖
看完这个帖子感觉很有收获
正想着突然有了灵感,将截止前的所有楼层作为seed的一部分是否可行呢?
使用mmh3库的非加密哈希算法将每一个楼层的唯一值哈希后作为seed,再将上一层的seed作为下一层seed的一部分,代码如下:
seed = b""
for i in posts:
params = f'{i["id"]}|{i["created_at"]}|{i["user_id"]}'
seed = mmh3.hash_bytes(key + seed + params.encode("utf-8"), x64arch=True)
seed = str(mmh3.hash(seed))
最后结合原帖的加密方式得到一个完整seed
md5_hash = hashlib.md5(key).hexdigest()
sha1_hash = hashlib.sha1(...