国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python hashlib模塊用法實例分析

2020-02-15 21:47:39
字體:
來源:轉載
供稿:網友

本文實例講述了Python hashlib模塊用法。分享給大家供大家參考,具體如下:

一、hashlib基本使用

python中的hashlib模塊用來進行hash或者md5加密,而且這種加密是不可逆的,所以這種算法又被稱為摘要算法。其支持Openssl庫提供的所有算法,包括md5、sha1、sha224、sha256、sha512等。

常用的屬性和方法:

algorithms:列出所有加密算法('md5','sha1','sha224','sha256','sha384','sha512')
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 hashlibm = hashlib.md5()m.update('how to use md5'.encode('utf-8'))m.update('in python hashlib'.encode('utf-8'))print m.hexdigest()

返回值如下:

9f97604918a2e86bfcc4aea5c35a4c8b

下面一個示例用于計算文件md5值:

#!/usr/bin/env python#coding: utf-8import hashlibimport sysdef main():  if len(sys.argv) != 2:    sys.exit('Usage: %s file' % sys.argv[0])  filename = sys.argv[1]  m = hashlib.md5()  with open(filename, 'rb') as fp:    while True:      blk = fp.read(4096) # 每次讀取4kb      if not blk: break      m.update(blk)  print m.hexdigest(), filenameif __name__ == '__main__':  main()

二、hashlib的應用場景

摘要算法通常應用于網站存儲用戶的帳號密碼相關信息。默認情況下,我們插入到數據庫的帳號密碼都是以明文保存。這樣的話,一旦數據庫泄露,所有用戶的口令都會直接泄露,而且明文保存,網站管理員也可以直接查看到用戶口令,這樣及不安全。所以我們可以在獲取到用戶輸入的密碼以后,直接對其進行加密處理。然后將加密的字符串存入數據庫。這樣當下次用戶登錄時,再對用戶輸入的密碼進行加密處理,然后與數據庫中存儲的加密字串進行比對,如果匹配,則說明密碼正確。

當然上述方法比明文存儲密碼確實要安全不少。但在有些場景中,用戶通常會將密碼設置的尤為簡單。這樣如果數據庫泄露,黑客可以通過簡單的密碼嘗試來完成對加密字串的匹配。為了解決這種方法,我們通常需要對密碼做“加鹽”處理。如下:

def get_md5(password):  m = hashlib.md5()  m.update(password)  return m.hexdigest()def calc_md5(password):  return get_md5(password + 'the-Salt')db = {}def register(username,password):  db[username] = username  db[password] = calc_md5(password)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 来凤县| 麻阳| 神农架林区| 灵台县| 永城市| 柳州市| 澎湖县| 奇台县| 金门县| 洛宁县| 行唐县| 嘉义市| 喀什市| 滁州市| 招远市| 麟游县| 沛县| 金乡县| 彰武县| 额济纳旗| 崇左市| 高安市| 延庆县| 北京市| 田林县| 保定市| 定远县| 阿拉善右旗| 如东县| 丰顺县| 卢氏县| 惠水县| 安多县| 兴义市| 修文县| 新和县| 遂宁市| 德惠市| 赤水市| 肇州县| 长春市|