最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python hashlib模塊用法實例分析

 更新時間:2018年06月12日 09:00:53   作者:breezey  
這篇文章主要介紹了Python hashlib模塊用法,結合實例形式分析了Python使用hash模塊進行md5、sha1、sha224、sha256、sha512等加密運算相關操作技巧與注意事項,需要的朋友可以參考下

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

一、hashlib基本使用

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

常用的屬性和方法:

algorithms:列出所有加密算法('md5','sha1','sha224','sha256','sha384','sha512')
digesti_size:產生的散列的字節(jié)大小
md5()/sha1():創(chuàng)建一個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()
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-8
import hashlib
import sys
def 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(), filename
if __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)

這樣,只要'the-Salt'部分不被泄露,就沒辦法反推用戶的簡單密碼。

但是這樣仍然有個問題,那就是多個用戶的密碼可能重復,這樣,在數據庫里就會出現相同的加密字串。我們知道通常而言,用戶的用戶名肯定不會相同。我們再假設用戶的用戶名不會改變。我們可以使用用戶的用戶名來做加鹽處理,如下:

def clc_md5(username,password):
  return get_md5(passwd + username + 'the-Salt')

PS:關于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python文件與目錄操作技巧匯總》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python中使用Celery容聯云異步發(fā)送驗證碼功能

    python中使用Celery容聯云異步發(fā)送驗證碼功能

    Celery 是一個 基于python開發(fā)的分布式異步消息任務隊列,通過它可以輕松的實現任務的異步處理,本文重點給大家介紹使用Celery容聯云異步發(fā)送驗證碼功能,感興趣的朋友一起看看吧
    2021-09-09
  • Anaconda中Python虛擬環(huán)境的創(chuàng)建使用與刪除方法詳解

    Anaconda中Python虛擬環(huán)境的創(chuàng)建使用與刪除方法詳解

    這篇文章主要為大家介紹了在Anaconda環(huán)境下,創(chuàng)建、使用與刪除Python虛擬環(huán)境的方法,具有一定的借鑒價值,需要的小伙伴可以跟隨小編一起了解一下
    2023-08-08
  • Python爬蟲數據的分類及json數據使用小結

    Python爬蟲數據的分類及json數據使用小結

    這篇文章主要介紹了Python爬蟲數據的分類及json數據使用小結,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • python中opencv K均值聚類的實現示例

    python中opencv K均值聚類的實現示例

    本文主要介紹了python中opencv K均值聚類的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 使用Python爬取Json數據的示例代碼

    使用Python爬取Json數據的示例代碼

    這篇文章主要介紹了使用Python爬取Json數據的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Python?創(chuàng)建格式化字符串方法

    Python?創(chuàng)建格式化字符串方法

    這篇文章主要介紹了Python?創(chuàng)建格式化字符串方法,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • nlp計數法應用于PTB數據集示例詳解

    nlp計數法應用于PTB數據集示例詳解

    這篇文章主要為大家介紹了nlp計數法應用于PTB數據集示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • pytorch中的inference使用實例

    pytorch中的inference使用實例

    今天小編就為大家分享一篇pytorch中的inference使用實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python實現unicode轉中文及轉換默認編碼的方法

    python實現unicode轉中文及轉換默認編碼的方法

    這篇文章主要介紹了python實現unicode轉中文及轉換默認編碼的方法,結合實例形式分析了Python針對Unicode編碼操作的相關技巧及編碼轉換中的常見問題解決方法,需要的朋友可以參考下
    2017-04-04
  • PyQtGraph在pyqt中的應用及安裝過程

    PyQtGraph在pyqt中的應用及安裝過程

    這篇文章主要介紹了PyQtGraph在pyqt中的應用,文中給大家介紹了pyqtgraph的主要用途及PyQtGraph的安裝過程,需要的朋友可以參考下
    2019-08-08

最新評論

西贡区| 杭锦后旗| 通海县| 罗田县| 双柏县| 西藏| 琼结县| 夏河县| 盐城市| 锡林浩特市| 宜宾市| 广丰县| 时尚| 同德县| 南江县| 大庆市| 江安县| 高清| 花莲县| 洪湖市| 台中市| 盐边县| 扎鲁特旗| 贵港市| 台北县| 和龙市| 临桂县| 宁南县| 思南县| 佛坪县| 麻阳| 万安县| 湘潭县| 长沙县| 阳朔县| 宁陕县| 通州市| 新闻| 汉沽区| 乐东| 巴楚县|