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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:crypt——驗(yàn)證Unix口令的函數(shù)

crypt —— 驗(yàn)證 Unix 口令的函數(shù)

源代碼: Lib/struct.py

從版本 3.11 開始標(biāo)記為過時(shí),將在版本 3.13 中移除。: crypt 模塊已被棄用(請參閱 PEP 594 了解詳情及其替代品)。 hashlib 模塊是針對特定用例的潛在替換選項(xiàng)。


本模塊實(shí)現(xiàn)了連接 crypt(3)) 的接口,是一個(gè)基于改進(jìn) DES 算法的單向散列函數(shù);更多細(xì)節(jié)請參閱 Unix man 手冊??赡艿挠猛景ū4娼?jīng)過哈希的口令,這樣就可以在不存儲(chǔ)實(shí)際口令的情況下對其進(jìn)行驗(yàn)證,或者嘗試用字典來破解 Unix 口令。

請注意,本模塊的執(zhí)行取決于當(dāng)前系統(tǒng)中 crypt(3)) 的實(shí)際實(shí)現(xiàn)。 因此,當(dāng)前實(shí)現(xiàn)版本可用的擴(kuò)展均可在本模塊使用。

Availability: Unix, not VxWorks.

Availability: not Emscripten, not WASI.

This module does not work or is not available on WebAssembly platforms wasm32-emscripten and wasm32-wasi. See WebAssembly platforms for more information.

哈希方法

3.3 新版功能.

crypt 模塊定義了哈希方法的列表(不是所有的方法在所有平臺(tái)上都可用)。

crypt.METHOD_SHA512

基于 SHA-512 哈希函數(shù)的模塊化加密格式方法,具備 16 個(gè)字符的 salt 和 86個(gè)字符的哈希算法。這是最強(qiáng)的哈希算法。

crypt.METHOD_SHA256

另一種基于 SHA-256 哈希函數(shù)的模塊化加密格式方法,具備 16 個(gè)字符的 salt 和 43 個(gè)字符的哈希算法。

crypt.METHOD_BLOWFISH

另一種基于 Blowfish 的模塊化加密格式方法,有 22 個(gè)字符的 salt 和 31 個(gè)字符的哈希算法。

3.7 新版功能.

crypt.METHOD_MD5

另一種基于 MD5 哈希函數(shù)的模塊化加密格式方法,具備 8 個(gè)字符的 salt 和 22 個(gè)字符的哈希算法。

crypt.METHOD_CRYPT

傳統(tǒng)的方法,具備 2 個(gè)字符的 salt 和 13 個(gè)字符的哈希算法。這是最弱的方法。

模塊屬性

3.3 新版功能.

crypt.methods

可用口令哈希算法的列表,形式為 crypt.METHOD_* 對象。該列表從最強(qiáng)到最弱進(jìn)行排序。

模塊函數(shù)

crypt 模塊定義了以下函數(shù):

crypt.crypt(word, salt=None)

word 通常將是用戶在提示符或圖形界面上輸入的口令。 可選參數(shù) salt 要么是 mksalt() 所返回的字符串,即 crypt.METHOD_* 值之一(盡管不是在所有平臺(tái)上都可用),要么就是一個(gè)包括 salt 的完全加密的口令,與本函數(shù)的返回值一樣。 如果未給出 salt,則將使用 methods 中提供的最強(qiáng)方法。

查驗(yàn)口令通常是傳入純文本密碼 word ,和之前 crypt() 調(diào)用的結(jié)果進(jìn)行比較,應(yīng)該與本次調(diào)用的結(jié)果相同。

salt (隨機(jī)的 2 或 16 個(gè)字符的字符串,可能帶有 $digit{TX-PL-LABEL}#x60; 前綴以提示相關(guān)方法) 將被用來擾亂加密算法。 salt 中的字符必須在 [./a-zA-Z0-9] 集合中,但 Modular Crypt Format 除外,它會(huì)帶有 $digit{TX-PL-LABEL}#x60; 前綴。

返回哈希后的口令字符串,將由 salt 所在字母表中的字符組成。

由于有些 crypt(3)) 擴(kuò)展可以接受各種大小的 salt 值,建議在查驗(yàn)口令時(shí)采用完整的加密后口令作為 salt。

在 3.3 版更改: 除了字符串之外, salt 還可接受 crypt.METHOD_* 值。

crypt.mksalt(method=None, **, rounds=None*)

返回用指定方法隨機(jī)生成的 salt 值。 如果沒有給出 method,則會(huì)使用 methods 中提供的最強(qiáng)方法。is used.

返回一個(gè)字符串,可用作傳入 crypt() 的 salt 參數(shù)。

rounds 指定了 METHOD_SHA256, METHOD_SHA512METHOD_BLOWFISH 的循環(huán)次數(shù)。 對于 METHOD_SHA256METHOD_SHA512 而言,必須為介于 1000999_999_999 之間的整數(shù),默認(rèn)值為 5000。 而對于 METHOD_BLOWFISH,則必須為 16 (24) 和 2_147_483_648 (231) 之間的二的冪,默認(rèn)值為 4096 (212)。

3.3 新版功能.

在 3.7 版更改: 加入 rounds 參數(shù)。

例子

以下簡單示例演示了典型用法(需要一個(gè)時(shí)間固定的比較操作來限制留給計(jì)時(shí)攻擊的暴露面。 hmac.compare_digest() 即很適用):

 
 
 
 
  1. import pwd
  2. import crypt
  3. import getpass
  4. from hmac import compare_digest as compare_hash
  5. def login():
  6. username = input('python login: ')
  7. cryptedpasswd = pwd.getpwnam(username)[1]
  8. if cryptedpasswd:
  9. if cryptedpasswd == 'x' or cryptedpasswd == '*':
  10. raise ValueError('no support for shadow passwords')
  11. cleartext = getpass.getpass()
  12. return compare_hash(crypt.crypt(cleartext, cryptedpasswd), cryptedpasswd)
  13. else:
  14. return True

采用當(dāng)前強(qiáng)度最高的方法生成哈希值,并與原口令進(jìn)行核對:

 
 
 
 
  1. import crypt
  2. from hmac import compare_digest as compare_hash
  3. hashed = crypt.crypt(plaintext)
  4. if not compare_hash(hashed, crypt.crypt(plaintext, hashed)):
  5. raise ValueError("hashed version doesn't validate against original")

分享文章:創(chuàng)新互聯(lián)Python教程:crypt——驗(yàn)證Unix口令的函數(shù)
當(dāng)前路徑:http://www.5511xx.com/article/dhhspsp.html