好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > Python基礎(chǔ)之hashlib模塊詳解

Python基礎(chǔ)之hashlib模塊詳解

熱門(mén)標(biāo)簽:荊州云電銷(xiāo)機(jī)器人供應(yīng)商 遼寧400電話辦理多少錢(qián) 江蘇房產(chǎn)電銷(xiāo)機(jī)器人廠家 幫人做地圖標(biāo)注收費(fèi)算詐騙嗎 溫州旅游地圖標(biāo)注 悟空智電銷(xiāo)機(jī)器人6 電信營(yíng)業(yè)廳400電話申請(qǐng) 蘇州電銷(xiāo)機(jī)器人十大排行榜 外呼不封號(hào)系統(tǒng)

一、hashlib簡(jiǎn)介

1.什么叫hash:

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

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

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

MD5是最常見(jiàn)的摘要算法,速度很快,生成結(jié)果是固定的16字節(jié),通常用一個(gè)32位的16進(jìn)制字符串表示。SHA1算法更安全點(diǎn),它的結(jié)果是20字節(jié)長(zhǎng)度,通常用一個(gè)40位的16進(jìn)制字符串表示。而比SHA1更安全的算法是SHA256和SHA512等等,不過(guò)越安全的算法越慢,并且摘要長(zhǎng)度更長(zhǎng)

二、hash對(duì)象的方法

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

hashlib.new(name[, data])
一個(gè)通用的構(gòu)造方法,name是某個(gè)算法的字符串名稱(chēng),data是可選的bytes類(lèi)型待摘要的數(shù)據(jù)。

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

三、hashlib實(shí)際操作

1)在進(jìn)行md5哈希運(yùn)算前,需要對(duì)數(shù)據(jù)進(jìn)行編碼,否則報(bào)錯(cuò)

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

2)obj是hash對(duì)象

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

3)得到字符串

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

4)給加密增添難度

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

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

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)
--------------結(jié)果:
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('**************用戶注冊(cè)**************')
    while True:
        user = input('請(qǐng)輸入用戶名:')
        if user == 'N':
            return
        pwd = input('請(qǐng)輸入密碼:')
        temp = {'username':user,'password':get_md5(pwd)}
        USER_LIST.append(temp)
def login():
    print('**************用戶登陸**************')
    user = input('請(qǐng)輸入用戶名:')
    pwd = input('請(qǐng)輸入密碼:')

    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('登陸失敗')
------------------------結(jié)果:
**************用戶注冊(cè)**************
請(qǐng)輸入用戶名:小馬過(guò)河
請(qǐng)輸入密碼:123456
請(qǐng)輸入用戶名:N
**************用戶登陸**************
請(qǐng)輸入用戶名:小馬過(guò)河
請(qǐng)輸入密碼:123456
登陸成功

到此這篇關(guān)于Python基礎(chǔ)之hashlib模塊詳解的文章就介紹到這了,更多相關(guān)Python hashlib模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

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

標(biāo)簽:黃山 喀什 三沙 景德鎮(zhèn) 臺(tái)灣 濟(jì)南 欽州 宿遷

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python基礎(chǔ)之hashlib模塊詳解》,本文關(guān)鍵詞  Python,基礎(chǔ),之,hashlib,模塊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python基礎(chǔ)之hashlib模塊詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python基礎(chǔ)之hashlib模塊詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: pokemonsex性漫画| 正常同房一次多少分钟| 都市激情中文字幕| 99久久精品免费看国产免费软件| 欧美精品videosex性欧美| 亚洲偷窥另类XXXXX乱室佳宾 | 郡主她身娇体软| 日本哺乳期xxxxhd奶水| 日韩特黄爽爽精品一区二区三区| 无码人妻一区二区三区神菜美| loveme枫与铃未删减版免费观看| 被灌药的搜查官波多野结衣| 国产精品久久久一级毛片| 近親相姦中出し親子本庄瞳| 久99久爱精品免费观看视频| 噜噜噜色噜噜噜久久| 亚洲欧美另类激情综合区小说| 国产精品 15P| 欧美激情情欲禁忌| 欧美性猛交xxxx黑人| 欧美调教视频在线bdsm| free性欧美人与dσg| 上课把女同桌内裤摸湿| 一级片久久| 国产51精品秘?入口豆花| 成人动毛片| 亚洲国产一| 韩国乱人伦电影| 92影视| 亚洲精品久久久久久下一站| 国产精品一线二线三线精华液的 | 色哟哟 国产精品| 唐人电影社欧美一区二区| 性大片免费视频观看| 亚洲免费在线看| 老师张开让我?了一夜AV| 坐公交忘穿内裤被挺进H漫画| 在线观看黄动漫| 色综合67194| 一级做a爰片久久毛片人呢| 风车动漫530|