日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:secrets—-生成管理密碼的安全隨機數(shù)

secrets —- 生成管理密碼的安全隨機數(shù)

3.6 新版功能.

成都創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為永泰企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、網(wǎng)站制作,永泰網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

源代碼: Lib/secrets.py


secrets 模塊用于生成高度加密的隨機數(shù),適于管理密碼、賬戶驗證、安全憑據(jù)及機密數(shù)據(jù)。

最好用 secrets 替代 random 模塊的默認偽隨機數(shù)生成器,該生成器適用于建模和模擬,不宜用于安全與加密。

參見

PEP 506

隨機數(shù)

secrets 模塊是操作系統(tǒng)提供的最安全地隨機性來源。

class secrets.SystemRandom

用操作系統(tǒng)提供的最高質(zhì)量源生成隨機數(shù)的類。詳見 random.SystemRandom。

secrets.choice(sequence)

Return a randomly chosen element from a non-empty sequence.

secrets.randbelow(n)

返回 [0, n) 范圍內(nèi)的隨機整數(shù)。

secrets.randbits(k)

返回 k 個隨機比特位的整數(shù)。

生成 Token

secrets 模塊提供了生成安全 Token 的函數(shù),適用于密碼重置、密保 URL 等應(yīng)用場景。

secrets.token_bytes([nbytes=None])

返回含 nbytes 個字節(jié)的隨機字節(jié)字符串。如果未提供 nbytes,或*nbytes* 為 None,則使用合理的默認值。

 
 
 
 
  1. >>> token_bytes(16)
  2. b'\xebr\x17D*t\xae\xd4\xe3S\xb6\xe2\xebP1\x8b'

secrets.token_hex([nbytes=None])

返回十六進制隨機文本字符串。字符串有 nbytes 個隨機字節(jié),每個字節(jié)轉(zhuǎn)換為兩個十六進制數(shù)碼。未提供 nbytes 或為 None 時,則使用合理的默認值。

 
 
 
 
  1. >>> token_hex(16)
  2. 'f9bf78b9a18ce6d46a0cd2b0b86df9da'

secrets.token_urlsafe([nbytes=None])

返回安全的 URL 隨機文本字符串,包含 nbytes 個隨機字節(jié)。文本用 Base64 編碼,平均來說,每個字節(jié)對應(yīng) 1.3 個結(jié)果字符。未提供 nbytes 或為 None 時,則使用合理的默認值。

 
 
 
 
  1. >>> token_urlsafe(16)
  2. 'Drmhze6EPcv0fN_81Bj-nA'

Token 應(yīng)當使用多少個字節(jié)?

為了在面對 暴力攻擊 時保證安全,Token 的隨機性必須足夠高。隨著計算機推衍能力的不斷提升,隨機性的安全標準也要不斷提高。比如 2015 年,32 字節(jié)(256 位)的隨機性對于 secrets 模塊的典型用例就已經(jīng)足夠了。

要自行管理 Token 長度的用戶,可以通過為 token_* 函數(shù)指定 int 參數(shù)顯式指定 Token 要使用多大的隨機性。該參數(shù)以字節(jié)數(shù)表示隨機性大小。

反之,如果未提供參數(shù),或參數(shù)為 None,則 token_* 函數(shù)將使用合理的默認值。

備注

該默認值隨時可能會改變,比如,版本更新的時候。

其他功能

secrets.compare_digest(a, b)

如果字符串 ab 相等則返回 True,否則返回 False,使用“常態(tài)化比較”來降低 定時攻擊 的風(fēng)險。 請參閱 hmac.compare_digest() 了解更多詳情。

應(yīng)用技巧與最佳實踐

本節(jié)展示了一些使用 secrets 管理基本安全級別的應(yīng)用技巧和最佳實踐。

生成長度為八個字符的字母數(shù)字密碼:

 
 
 
 
  1. import string
  2. import secrets
  3. alphabet = string.ascii_letters + string.digits
  4. password = ''.join(secrets.choice(alphabet) for i in range(8))

備注

Applications should not store passwords in a recoverable format, whether plain text or encrypted. They should be salted and hashed using a cryptographically strong one-way (irreversible) hash function.

生成長度為十個字符的字母數(shù)字密碼,包含至少一個小寫字母,至少一個大寫字母以及至少三個數(shù)字:

 
 
 
 
  1. import string
  2. import secrets
  3. alphabet = string.ascii_letters + string.digits
  4. while True:
  5. password = ''.join(secrets.choice(alphabet) for i in range(10))
  6. if (any(c.islower() for c in password)
  7. and any(c.isupper() for c in password)
  8. and sum(c.isdigit() for c in password) >= 3):
  9. break

生成 XKCD 風(fēng)格的密碼串:

 
 
 
 
  1. import secrets
  2. # On standard Linux systems, use a convenient dictionary file.
  3. # Other platforms may need to provide their own word-list.
  4. with open('/usr/share/dict/words') as f:
  5. words = [word.strip() for word in f]
  6. password = ' '.join(secrets.choice(words) for i in range(4))

生成臨時密保 URL,包含密碼恢復(fù)應(yīng)用的安全 Token:

 
 
 
 
  1. import secrets
  2. url = 'https://example.com/reset=' + secrets.token_urlsafe()

網(wǎng)頁題目:創(chuàng)新互聯(lián)Python教程:secrets—-生成管理密碼的安全隨機數(shù)
標題路徑:http://www.5511xx.com/article/ccecgsi.html