ホームページ  >  に質問  >  本文

python - os.urandom(20) 生成的随机数会重复吗?

os.urandom(20) 生成的随机数会重复吗?

这里的 urandom 应该是调用的系统的随机方法吧

Django REST Framework 中 Token 的生成方法

def save(self, *args, **kwargs):
    if not self.key:
        self.key = self.generate_key()
    return super(Token, self).save(*args, **kwargs)

def generate_key(self):
    return binascii.hexlify(os.urandom(20)).decode()
高洛峰高洛峰2742日前908

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-04-17 17:36:06

    基本的には衝突の確率は非常に低いと考えてよく、ここで指定した長さは20ビットです。全く衝突しないとは言えませんが、確率は非常に低く、基本的には衝突することになります。衝突はありません。
    ドキュメントを参照

    リーリー

    「返されるデータは、暗号化アプリケーションにとって十分に予測不可能である必要がありますが、その正確な品質は OS の実装によって異なります。

    返されたデータは、暗号関連の暗号化に役立つほど十分に「予測不可能」です。

    テストを行ったところ、1000W のレコードが生成されました。データのテスト強度を上げて再試行できます。統計的な観点から見ると、この非常に確率の低いイベントの確率は 0 であると考えられます。

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:36:06

    もちろん繰り返します。乱数なのでランダムに繰り返します。

    返事
    0
  • キャンセル返事