建立加密安全隨機數
預設情況下,Python 隨機模組使用 Mersenne Twister PRNG
生成隨機數,雖然適用於模擬等領域,但在更苛刻的環境中無法滿足安全要求。
為了建立加密安全的偽隨機數,可以使用 SystemRandom
,通過使用 os.urandom
,它能夠充當密碼安全的偽隨機數發生器 CPRNG 。
使用它的最簡單方法是簡單地初始化 SystemRandom
類。提供的方法類似於隨機模組匯出的方法。
from random import SystemRandom
secure_rand_gen = SystemRandom()
為了在 [0, 20]
中建立 10 int
s 的隨機序列,可以簡單地呼叫 randrange()
:
print([secure_rand_gen.randrange(10) for i in range(10)])
# [9, 6, 9, 2, 2, 3, 8, 0, 9, 9]
要在給定範圍內建立隨機整數,可以使用 randint
:
print(secure_rand_gen.randint(0, 20))
# 5
因此,對於所有其他方法。介面完全相同,唯一的變化是底層數字生成器。
你也可以直接使用 os.urandom
來獲取加密安全的隨機位元組。