我需要一个胆小鬼。真的,任何可能是唯一的数字。但是,我不喜欢泄漏时间和其他东西,因为一个GUID可能会泄漏。我应该使用什么作为密码替换?我在想,也许我可以使用PBKDF2,使用GUID +盐分/胡椒,但也许这有点过分,或者不是我想要的?
发布于 2012-08-09 23:51:54
我不认为你能比你能生成的最佳随机数做得更好。
发布于 2012-08-13 10:58:37
听起来,您需要一个由Python函数UUID生成的"version 4 uuid.uuid4()“。
正如在RFC 4122中定义的,Version4UUID有6个固定位(表明这是一个“Version4UUID”)和122个随机生成的位。
(对于您的应用程序,它可能更简单,因此更好地获取一个完整的128个随机位,并直接使用,正如David建议的那样)。
版本4的UUID通常作为128位的原始数组在内部存储,通常以如下格式显示:
uuid:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx其中x是任意(随机选择的)十六进制数字,y是从8、9、a或b中随机选择的。
由于6个固定位对于每个UUID都是相同的(不管是什么机器创建的,或者是什么时候创建的),其余的122位都是随机生成的,所以版本4 UUID中没有任何信息可以识别创建它的机器或何时创建它。
“随机选择”值最好来自密码安全伪随机数生成器,如/dev/随机、硬件随机数生成器等。
这些“随机选择”的值最好不是来自“不安全”的随机数源,例如Python函数随机()、基本函数rand()、C stdlib函数rand()等等。
https://crypto.stackexchange.com/questions/3495
复制相似问题