使用Python生成安全的隨機數以管理金鑰
為了使用密碼學方法生成安全的隨機數,我們可以使用python中的secrets模組。此模組有助於建立安全的密碼、帳戶身份驗證、安全令牌或一些相關的金鑰。
要使用secrets模組的類和模組,我們應該將該模組匯入到我們的程式碼中。
import secrets
隨機數
secrets模組用於訪問安全隨機數源,這些源由作業系統提供。
secrets模組中與隨機數相關的類和函式如下:
類 secrets.SystemRandom
這是一個用於生成隨機數的類,它使用作業系統提供的最高質量的源。
方法 secrets.choice(sequence)
此方法用於從非空序列中隨機選擇一個元素。
方法 secrets.randbelow(n)
此方法用於從0到n(不包括n)的範圍內選擇一個整數值。
方法 secrets.randbits(k)
此方法用於返回一個具有k個隨機位的整數。
生成令牌
secrets模組還可以生成一些安全的令牌。這些型別的令牌可用於生成密碼重置、複雜的URL等。
一些與令牌生成相關的函式如下:
方法 secrets.token_bytes([nbytes=None])
此方法返回一個具有nbytes位元組的隨機位元組字串,以生成安全的令牌。當未給出nbytes值時,它使用指定的預設值。
方法 secrets.token_hex([nbytes=None])
此方法返回一個十六進位制形式的隨機文字字串。返回的字串具有nbytes個隨機位元組。每個字元可以轉換為兩個十六進位制數字。當未給出nbytes值時,它使用指定的預設值。
方法 secrets.token_urlsafe([nbytes=None])
此方法用於返回一個隨機的URL安全文字字串。該文字基本上是Base64編碼的。平均每個位元組產生1.3個字元(大約)。
示例程式碼
import secrets my_sequence = ['K','?','D',':','o','5','t','l','Y','0'] rand_pass = '' for i in range(15): rand_char = secrets.choice(my_sequence) rand_pass += rand_char print("Random Password is: " + rand_pass) my_tok1 = secrets.token_hex(10) #Create HEX token of length 10 my_tok2 = secrets.token_hex(5) #Create HEX token of length 5 print("First Token: " + my_tok1) print("First Token: " + my_tok2)
輸出
Random Password is: YK0l:YD??lKKY?o First Token: f3e68646dcf1082e1038 First Token: e4ae3c2384
廣告