欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python模塊hashlib(加密服務(wù))知識點講解

 更新時間:2019年11月25日 14:29:57   作者:Mr-chen  
在本篇文章里小編給大家分享的是關(guān)于python模塊hashlib(加密服務(wù))知識點內(nèi)容,有需要的朋友們可以學習下。

官方文案:https://docs.python.org/zh-cn/3/library/hashlib.html

hashlib --- 安全哈希與消息摘要

Python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。

什么是摘要digest algorithms算法呢?摘要算法又稱哈希hash算法、散列算法。它通過一個函數(shù),把任意長度的數(shù)據(jù)轉(zhuǎn)換為一個長度固定的數(shù)據(jù)串(通常用16進制的字符串表示)。

hash算法

每種類型的hash都有一個構(gòu)建器方法,返回一個hash對象和相同的簡單接口。

例如:

使用sha256()創(chuàng)建一個SHA-256hash object??梢允褂胾pdate()喂給它bytes-like object。然后可以用digest()或hexdigest()來獲得數(shù)據(jù)的摘要。

hashlib模型有許多算法如:sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), and blake2s()。還有很多其他算法要看Python使用的OpenSSL libary。具體見文檔。

使用algorithms_guaranteed常量,查看模塊在所有平臺都支持的算法:

>>> hashlib.algorithms_guaranteed
{'blake2s', 'sha256', 'sha3_512', 'sha1', 'shake_128', 'sha3_256', 'sha3_384', 'blake2b', 'sha3_224', 'sha512', 'md5', 'shake_256', 'sha224', 'sha384'}

使用algorithms_available常量,在編譯器運行時可以的hash算法

>>> hashlib.algorithms_available
{'sha3_256', 'blake2b', 'md5', 'sha512_224', 'sha384', 'md4', 'sha256', 'sha512', 'whirlpool', 'sha224', 'sha512_256', 'shake_128', 'sha3_384', 'ripemd160', 'blake2s', 'sha3_512', 'sha1', 'sm3', 'shake_256', 'sha3_224', 'md5-sha1'}

例子:

>>> import hashlib
>>> m = hashlib.sha256()
>>> m.update(b" the spammish repetition")  #重復調(diào)用相當于,把bytes字節(jié)串相加。
>>> m.name  #hash算法的名字
'sha256'
>>> m.digest() #返回傳入update()的數(shù)據(jù)的摘要
b'U<\x9bP\xb1\xa8\x9a\x9aE\x0f;h\xdb\x04\x11\xc1\x08\xfaH\xa7\t\xbfF\x91\x01\x13\xa1\x87\xb6\xd9`\x96'
>>> m.digest_size  #摘要的大小
>>> m.block_size  #hash算法內(nèi)的塊的大小
>>> m.hexdigest()  #返回一個字符串對象,一般用在安全的email或其他非binary環(huán)境
'553c9b50b1a89a9a450f3b68db0411c108fa48a709bf46910113a187b6d96096'
>>>

不同的算法安全不一樣,sha256就比sha1安全,但越安全的算法不僅越慢,摘要長度更長。

摘要算法應(yīng)用

保存用戶輸入的密碼:正確的保存口令的方式是不存儲用戶的明文口令,而是存儲用戶口令的摘要,比如MD5.

摘要算法在很多地方都有廣泛的應(yīng)用。要注意摘要算法不是加密算法,不能用于加密(因為無法通過摘要反推明文),只能用于防篡改,但是它的單向計算特性決定了可以在不存儲明文口令的情況下驗證用戶口令。

例子:

存儲MD5的好處是即使運維人員能訪問數(shù)據(jù)庫,也無法獲知用戶的明文口令。

設(shè)計一個驗證用戶登錄的函數(shù),根據(jù)用戶輸入的口令是否正確,返回True或False:

# -*- coding: utf-8 -*-
db = {
  'michael': 'e10adc3949ba59abbe56e057f20f883e',
  'bob': '878ef96e86145580c38c87f0410ad153',
  'alice': '99b1c2188db85afee403b1536010c2c9'
}

import hashlib

def calc_md5(password):
  m = hashlib.md5()
  m.update(password.encode('utf-8'))
  return m.hexdigest()

def login(user, password):
  return db[user] == calc_md5(password)
    

# 測試:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')

希望腳本之家整理的相關(guān)知識點能夠幫助到大家,感謝你們的支持。

相關(guān)文章

  • 詳解Python GUI編程之PyQt5入門到實戰(zhàn)

    詳解Python GUI編程之PyQt5入門到實戰(zhàn)

    這篇文章主要介紹了詳解Python GUI編程之PyQt5入門到實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python多版本安裝與Jupyter Lab使用方式

    Python多版本安裝與Jupyter Lab使用方式

    這篇文章主要介紹了Python多版本安裝與Jupyter Lab使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用Python進行穩(wěn)定可靠的文件操作詳解

    使用Python進行穩(wěn)定可靠的文件操作詳解

    在本文中,主要分享一些如何在Python代碼中改善I/O可靠性的見解,大家參考使用吧
    2013-12-12
  • Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換

    Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換

    這篇文章主要介紹了Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 解決python中使用PYQT時中文亂碼問題

    解決python中使用PYQT時中文亂碼問題

    今天小編就為大家分享一篇解決python中使用PYQT時中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 圖文詳解Python中最神秘的一個魔法函數(shù)

    圖文詳解Python中最神秘的一個魔法函數(shù)

    Python進階之路我覺得有兩個東西一定要了解,一個是魔法函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中最神秘的一個魔法函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • 中秋陰天看不見月亮只好用python寫賞月工具

    中秋陰天看不見月亮只好用python寫賞月工具

    女神約我去賞月!我一看中秋節(jié)可能會下雨,立馬用Python寫了款賞月工具!本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考價值,需要的朋友可以參考下
    2021-09-09
  • python-django中的APPEND_SLASH實現(xiàn)方法

    python-django中的APPEND_SLASH實現(xiàn)方法

    這篇文章主要介紹了python-django中的APPEND_SLASH實現(xiàn)方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Django 用戶認證Auth組件的使用

    Django 用戶認證Auth組件的使用

    這篇文章主要介紹了Django 用戶認證Auth組件的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 在pycharm中關(guān)掉ipython console/PyDev操作

    在pycharm中關(guān)掉ipython console/PyDev操作

    這篇文章主要介紹了在pycharm中關(guān)掉ipython console/PyDev操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論