亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python基礎之hashlib模塊詳解

瀏覽:3日期:2022-06-20 14:40:24
一、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字節(jié),通常用一個32位的16進制字符串表示。SHA1算法更安全點,它的結果是20字節(jié)長度,通常用一個40位的16進制字符串表示。而比SHA1更安全的算法是SHA256和SHA512等等,不過越安全的算法越慢,并且摘要長度更長

二、hash對象的方法

hash.update(arg)更新hash對象。連續(xù)的調用該方法相當于連續(xù)的追加更新。例如m.update(a); m.update(b)相當于m.update(a+b)。注意,當數(shù)據(jù)規(guī)模較大的時候,Python的GIL在此時會解鎖,用于提高計算速度。一定要理解update()的作用,由于消息摘要是只針對當前狀態(tài)產生的,所以每一次update后,再次計算hexdigest()的值都會不一樣。 hash.digest()返回bytes格式的消息摘要 hash.hexdigest()與digest方法類似,不過返回的是兩倍長度的字符串對象,所有的字符都是十六進制的數(shù)字。通常用于郵件傳輸或非二進制環(huán)境中。通常我們比較摘要時,比較的就是這個值! hash.copy()返回一個hash對象的拷貝hashlib.new(name[, data])一個通用的構造方法,name是某個算法的字符串名稱,data是可選的bytes類型待摘要的數(shù)據(jù)。>>> h = hashlib.new(’sha256’,b'haha')>>> h.hexdigest()’090b235e9eb8f197f2dd927937222c570396d971222d9009a9189e2b6cc0a2c1’三、hashlib實際操作

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

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

2)obj是hash對象

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

3)得到字符串

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

4)給加密增添難度

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

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

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

import hashlibUSER_LIST = []def get_md5(data): obj = hashlib.md5('12:;idrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad'.encode(’utf-8’)) obj.update(data.encode(’utf-8’)) result = obj.hexdigest() return resultdef register(): print(’**************用戶注冊**************’) while True:user = input(’請輸入用戶名:’)if user == ’N’: returnpwd = 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 Trueregister()result = login()if result: print(’登陸成功’)else: print(’登陸失敗’)------------------------結果:**************用戶注冊**************請輸入用戶名:小馬過河請輸入密碼:123456請輸入用戶名:N**************用戶登陸**************請輸入用戶名:小馬過河請輸入密碼:123456登陸成功

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产一级a毛片 | 99久久国产综合色 | 三区在线观看 | 亚洲首页 | 婷婷婷色 | 麻豆果冻国产91在线极品 | 一级视频在线 | 欧美夜恋影院夜恋秀场 | 久久精品国产亚洲片 | 国产精品国产午夜免费福利看 | 国产一区亚洲一区 | 国产亚洲欧美日韩在线观看不卡 | 日韩永久在线观看免费视频 | 做a视频大全 | 欧美一级毛片欧美毛片视频 | 日韩精品特黄毛片免费看 | 欧美亚洲国产另类在线观看 | a毛片在线免费观看 | 久久亚洲人成国产精品 | 麻豆射区 | 91短视频在线观看 | 精品国产日韩一区三区 | 高清不卡一区二区 | 精品午夜久久影视 | 99视频精品全部国产盗摄视频 | 黄色免费在线网站 | 亚洲网红精品大秀在线观看 | 亚洲精品国产第一区二区三区 | 性欧美一级毛片 | 免费一级毛片在线播放欧美 | 精品国产女同疯狂摩擦2 | 久久成人国产精品免费 | 欧美综合亚洲 | 国产高清在线精品免费 | 91在线视频免费播放 | 一区二区视屏 | 国产簧片在线观看 | 高清成人爽a毛片免费网站 高清成人综合 | 精品国产自在2o18 | 国内精品自在欧美一区 | 欧美金8天国 |