校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python基礎之hashlib模塊詳解

Python基礎之hashlib模塊詳解

熱門標簽:荊州云電銷機器人供應商 遼寧400電話辦理多少錢 江蘇房產電銷機器人廠家 幫人做地圖標注收費算詐騙嗎 溫州旅游地圖標注 悟空智電銷機器人6 電信營業廳400電話申請 蘇州電銷機器人十大排行榜 外呼不封號系統

一、hashlib簡介

1.什么叫hash:

hash是一種算法(不同的hash算法只是復雜度不一樣)(3.x里代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),該算法接受傳入的內容,經過運算得到一串hash值

2.hash值的特點是(hash值/產品有三大特性:):

  • 只要傳入的內容一樣,得到的hash值必然一樣=====>要用明文傳輸密碼文件完整性校驗
  • 不能由hash值返解成內容=======》把密碼做成hash值,不應該在網絡傳輸明文密碼(只能有內容返回hash值)
  • 只要使用的hash算法不變,無論校驗的內容有多大,得到的hash值長度是固定的(如從網上下載文件要進行hash校驗,保證網絡傳輸沒有丟包)

MD5是最常見的摘要算法,速度很快,生成結果是固定的16字節,通常用一個32位的16進制字符串表示。SHA1算法更安全點,它的結果是20字節長度,通常用一個40位的16進制字符串表示。而比SHA1更安全的算法是SHA256和SHA512等等,不過越安全的算法越慢,并且摘要長度更長

二、hash對象的方法

hash.update(arg)
更新hash對象。連續的調用該方法相當于連續的追加更新。例如m.update(a); m.update(b)相當于m.update(a+b)。注意,當數據規模較大的時候,Python的GIL在此時會解鎖,用于提高計算速度。
一定要理解update()的作用,由于消息摘要是只針對當前狀態產生的,所以每一次update后,再次計算hexdigest()的值都會不一樣。
 
hash.digest()
返回bytes格式的消息摘要
 
hash.hexdigest()
與digest方法類似,不過返回的是兩倍長度的字符串對象,所有的字符都是十六進制的數字。通常用于郵件傳輸或非二進制環境中。通常我們比較摘要時,比較的就是這個值!
 
hash.copy()
返回一個hash對象的拷貝

hashlib.new(name[, data])
一個通用的構造方法,name是某個算法的字符串名稱,data是可選的bytes類型待摘要的數據。

>>> h = hashlib.new('sha256',b"haha")
>>> h.hexdigest()
'090b235e9eb8f197f2dd927937222c570396d971222d9009a9189e2b6cc0a2c1'

三、hashlib實際操作

1)在進行md5哈希運算前,需要對數據進行編碼,否則報錯

import hashlib
obj = hashlib.md5()   #構造一個hashlib的對象
obj.update("小馬過河")  #update對指定字符串進行加密
print(obj)           
--------------結果:
  obj.update("小馬過河")
TypeError: Unicode-objects must be encoded before hashing

2)obj是hash對象

import hashlib
obj = hashlib.md5()
obj.update("小馬過河".encode("utf-8"))
print(obj,type(obj))
-------------------結果:
md5 HASH object @ 0x001C5590> class '_hashlib.HASH'>

3)得到字符串

import hashlib
obj = hashlib.md5()
obj.update("小馬過河".encode("utf-8"))
result=obj.hexdigest()
print(result)
--------------結果:
24f67b0f6d02adc8867d612e0e0fc40a

4)給加密增添難度

import hashlib
obj = hashlib.md5("mcw@xiaoma@aaaafffff".encode("utf-8"))  #添加一些內容,提高加密復雜度。此處的字符串也要先編碼,
obj.update("小馬過河".encode('utf-8'))
result = obj.hexdigest()
print(result)
-------------------結果:
b11740508f28e04837f2c0e3a58cf990

5)用hashlib做成加密函數(添加基礎的字符了的)

import hashlib
def get_md5(data):   #傳參為需要加密的字符串
    obj = hashlib.md5("sidrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()          
    return result
val = get_md5('123')
print(val)
--------------結果:
35093270b6352fa9721370b781f7b4d7

四、小小案例

import hashlib
USER_LIST = []
def get_md5(data):
    obj = hashlib.md5("12:;idrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()
    return result
def register():
    print('**************用戶注冊**************')
    while True:
        user = input('請輸入用戶名:')
        if user == 'N':
            return
        pwd = input('請輸入密碼:')
        temp = {'username':user,'password':get_md5(pwd)}
        USER_LIST.append(temp)
def login():
    print('**************用戶登陸**************')
    user = input('請輸入用戶名:')
    pwd = input('請輸入密碼:')

    for item in USER_LIST:
        if item['username'] == user and item['password'] == get_md5(pwd):
            return True
register()
result = login()
if result:
    print('登陸成功')
else:
    print('登陸失敗')
------------------------結果:
**************用戶注冊**************
請輸入用戶名:小馬過河
請輸入密碼:123456
請輸入用戶名:N
**************用戶登陸**************
請輸入用戶名:小馬過河
請輸入密碼:123456
登陸成功

到此這篇關于Python基礎之hashlib模塊詳解的文章就介紹到這了,更多相關Python hashlib模塊內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 在python中實現導入一個需要傳參的模塊
  • python文件目錄操作之os模塊
  • Python使用scapy模塊發包收包
  • Python collections模塊的使用技巧
  • Python使用random模塊實現擲骰子游戲的示例代碼
  • Python爬蟲基礎之requestes模塊
  • python常見模塊與用法
  • python中sys模塊的介紹與實例
  • Python中os模塊的簡單使用及重命名操作
  • python基于concurrent模塊實現多線程
  • python xlwt模塊的使用解析
  • Pyhton模塊和包相關知識總結

標簽:黃山 喀什 三沙 景德鎮 臺灣 濟南 欽州 宿遷

巨人網絡通訊聲明:本文標題《Python基礎之hashlib模塊詳解》,本文關鍵詞  Python,基礎,之,hashlib,模塊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python基礎之hashlib模塊詳解》相關的同類信息!
  • 本頁收集關于Python基礎之hashlib模塊詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 英山县| 阳东县| 合江县| 麻江县| 揭阳市| 通州市| 洛扎县| 齐齐哈尔市| 隆回县| 遂川县| 邻水| 安塞县| 定边县| 蓝山县| 黎平县| 永城市| 永丰县| 仁怀市| 连南| 景德镇市| 连州市| 射阳县| 阆中市| 清新县| 尼勒克县| 潞西市| 赤峰市| 乐平市| 丽水市| 梁山县| 阿城市| 武穴市| 时尚| 化隆| 上饶市| 托克逊县| 昆山市| 宁城县| 石首市| 镇巴县| 邳州市|