gpt4 book ai didi

python - python中的唯一 session ID

转载 作者:IT老高 更新时间:2023-10-28 21:40:47 51 4
gpt4 key购买 nike

如何在 Python 中生成唯一的 session ID?

最佳答案

更新:2016-12-21

在过去的 5 年里发生了很多事情。 /dev/urandom 已更新,现在被认为是现代 Linux 内核和发行版上的高熵随机源。在过去的 6mo 中,我们看到了使用 Ubuntu 的 Linux 3.19 内核上的熵饥饿,所以我认为这个问题还没有“解决”,但是当要求任何数量的随机性时,最终得到低熵随机性已经足够困难了来自操作系统。


我不想这么说,但就“安全 session ID”而言,此处发布的其他解决方案均不正确。

# pip install M2Crypto
import base64, M2Crypto
def generate_session_id(num_bytes = 16):
return base64.b64encode(M2Crypto.m2.rand_bytes(num_bytes))

uuid()os.urandom() 都不是生成 session ID 的好选择。两者都可能产生随机结果,但随机并不意味着它是安全,因为很差。参见 Haldir 或 How to Crack a Linear Congruential Generator 的“NIST's resources on Random Number Generation” .如果您仍想使用 UUID,请使用使用良好初始随机数生成的 UUID:

import uuid, M2Crypto
uuid.UUID(bytes = M2Crypto.m2.rand_bytes(num_bytes)))
# UUID('5e85edc4-7078-d214-e773-f8caae16fe6c')

或:

# pip install pyOpenSSL
import uuid, OpenSSL
uuid.UUID(bytes = OpenSSL.rand.bytes(16))
# UUID('c9bf635f-b0cc-d278-a2c5-01eaae654461')

M2Crypto 是 Python atm 中最好的 OpenSSL API,因为维护 pyOpenSSL 似乎只是为了支持旧版应用程序。

关于python - python中的唯一 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817882/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com