1. 程式人生 > >hashlib 模塊用來進行hash

hashlib 模塊用來進行hash

密文 常用 相同 安裝 size a+b 十六進制 print font

hashlib的基本概述:

  python中的 hashlib 模塊用來進行hash 或者md5加密,而且這種加密是不可逆的,所以這種算法又被稱為摘要算法,

其支持Opennssl庫提供的所有算法,包括 md5、sha1、sha224、sha256、sha512 等。

hash是一種算法 是將一個任意長的數據 根據計算 得到一個固定長度特征嗎

 特征:1、不同輸入 可能會有相同的結果 幾率特別小

    2、相同的輸入 必然得到相同結果

    3、由於散列(特征)的性質 從原理來看是不可能 反解

    4、用來 驗證 兩個輸入的數據是否一致

 使用場景:

   1、密碼驗證

   2、驗證數據是否被篡改 比如遊戲安裝包 有沒有被改過

 為了防止別人撞庫成功 可用提升密碼的復雜度 其次可以為密碼加鹽(加點內容進去)

ps:撞庫破解的原理 把常見的 明文和密文的對應關系 存到了數據庫中 運氣好就能查詢到

常用的屬性和方法

  algorithms : 列出所有加密算法

  digesti——size: 產生的散列的字節大小

  md5()/sha1() :創建一個 md5 或者 sha1加密模式的hash 對象

  update(arg) :用字符串參數來更新hash對象,如果同一個has對象重復調用該方法,如下:m.update(a); m.update(b), 則等於m.update(a+b)

  digest() : 返回摘要,作為二進制數據字符串值

  hexdigest() : 返回摘要,作為十六進制數據字符串值

  copy() :復制

下面是一個簡單的加密實例:

import  hashlib
m = hashlib.md5("aaa".encode("utf-8"))
print(m.hexdigest())

結果如下:

47bce5c74f589f4867dbd57e9ca9f808

下面是一個簡單的加鹽實例:

import  hashlib

m = hashlib.md5("321".encode("utf-8"))
#
m.update("abcdefplkjoujhh
".encode("utf-8")) print(m.hexdigest())

結果如下:

7da0befdd8fd811dd0716941c38c0111

關於hmac 的實例:

import hmac
# 沒啥區別 只是在創建的時候必須加鹽
h = hmac.new("abcdefjjjj".encode("utf-8"))

h.update("123".encode("utf-8"))

print(h.hexdigest())

結果如下:

944b3523fac69f32f6d399a11707da8b

hashlib 模塊用來進行hash