利用Python如何生成hash值示例詳解
一、介紹
如果在Python中需要對(duì)用戶(hù)輸入的密碼或者其他內(nèi)容進(jìn)行加密,首選的方法是生成hash值。
在Python中可以利用二個(gè)模塊來(lái)進(jìn)行:
- crypt
- hashlib
二、crypt
(一)crypt的主要方法和常量
| 名稱(chēng) | 描述 |
|---|---|
| md5(…) | 利用md5算法加密 |
| sha1(…) | 利用sha1算法加密 |
| sha224(…) | 利用sha224算法加密 |
| sha256(…) | 利用sha256算法加密 |
| sha384(…) | 利用sha384算法加密 |
| sha512(…) | 利用sha512算法加密 |
(二)使用說(shuō)明與示例
使用crypt.crypt(…)進(jìn)行hash加密的時(shí)候,需要提供二個(gè)參數(shù):
- 加密內(nèi)容
- salt
如果不特別指定salt,系統(tǒng)就會(huì)調(diào)用crypt.mksalt(…)生成一個(gè)salt
如果想要以特定的加密算法生成salt就應(yīng)該使用下面的命令:
>>>salt = crypt.mksalt(crypt.METHOD_SHA512) >>> salt '$6$s8Q3eNP6urKZb3AK'
然后再進(jìn)行數(shù)據(jù)加密:
>>> hash = crypt.crypt("helloworld",salt)
>>> hash
'$6$s8Q3eNP6urKZb3AK$L0O5cqHRU.1f170bV2KrjF3LkLL54So442TqUIsk.wYtCtOSD4Tyt./fj6W6Y.EzrbNm00grA4yPPhXGya2ie1'三、hashlib
(一)hashlib的主要方法和常量
| 名稱(chēng) | 描述 |
|---|---|
| md5(…) | 利用md5算法加密 |
| sha1(…) | 利用sha1算法加密 |
| sha224(…) | 利用sha224算法加密 |
| sha256(…) | 利用sha256算法加密 |
| sha384(…) | 利用sha384算法加密 |
| sha512(…) | 利用sha512算法加密 |
**(二)Hash對(duì)象特有的方法
如果你利用 hashlib 生成了一個(gè)Hash對(duì)象,那么這個(gè)Hash對(duì)象會(huì)包含如下方法:
| 名稱(chēng) | 描述 |
|---|---|
| update(arg) | 可以重復(fù)利用指定了特殊加密算法的Hash對(duì)象,對(duì) arg 進(jìn)行加密 |
| digest(…) | 以字符形式返回加密內(nèi)容 |
| hexdigest(…) | 以16進(jìn)制形式返回加密內(nèi)容 |
| copy(…) | 為了達(dá)到重復(fù)利用Hash對(duì)象的目的,而克隆Hash對(duì)象 |
(三)示例
1、直接使用hashlib方法
>>> hashlib.sha224("Nobody inspects the spammish repetition")
<sha224 HASH object @ 0x7f99432c5b28>
>>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()
'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'2、直接使用Hash對(duì)象中的方法
>>> m = hashlib.md5()
>>> m
<md5 HASH object @ 0x7f99432c5468>
>>> m.update("Nobody inspects")
>>> m.digest()
'>\xf7)\xcc\xf0\xccV\x07\x9c\xa5F\xd5\x80\x83\xdc\x12'
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Python3 Post登錄并且保存cookie登錄其他頁(yè)面的方法
今天小編就為大家分享一篇Python3 Post登錄并且保存cookie登錄其他頁(yè)面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python 中導(dǎo)入csv數(shù)據(jù)的三種方法
這篇文章主要介紹了Python 中導(dǎo)入csv數(shù)據(jù)的三種方法,內(nèi)容比較簡(jiǎn)單,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
Python實(shí)現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼
VOC 的標(biāo)注是xml格式的,而YOLO是.txt格式,所以要實(shí)現(xiàn)VOC數(shù)據(jù)集轉(zhuǎn)YOLO數(shù)據(jù)集,只能利用代碼實(shí)現(xiàn)。所以本文為大家介紹了Python中xml轉(zhuǎn)txt的示例代碼,需要的可以參考一下2022-03-03
Python 讀寫(xiě) Matlab Mat 格式數(shù)據(jù)的操作
這篇文章主要介紹了Python 讀寫(xiě) Matlab Mat 格式數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
OpenCV實(shí)戰(zhàn)記錄之基于分水嶺算法的圖像分割
在機(jī)器視覺(jué)中,有時(shí)需要對(duì)產(chǎn)品進(jìn)行檢測(cè)和計(jì)數(shù),其難點(diǎn)無(wú)非是對(duì)于產(chǎn)品的圖像分割,這篇文章主要給大家介紹了關(guān)于OpenCV實(shí)戰(zhàn)記錄之基于分水嶺算法的圖像分割的相關(guān)資料,需要的朋友可以參考下2023-02-02
python學(xué)生管理系統(tǒng)代碼實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了python學(xué)生管理系統(tǒng)代碼實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Pycharm2020.1安裝無(wú)法啟動(dòng)問(wèn)題即設(shè)置中文插件的方法
這篇文章主要介紹了Pycharm2020.1安裝無(wú)法啟動(dòng)問(wèn)題即設(shè)置中文插件的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-08-08
Python?Enum枚舉類(lèi)的定義及使用場(chǎng)景最佳實(shí)踐
枚舉(Enum)是一種有助于提高代碼可讀性和可維護(hù)性的數(shù)據(jù)類(lèi)型,允許我們?yōu)橐唤M相關(guān)的常量賦予有意義的名字,在Python中,枚舉類(lèi)(Enum)提供了一種簡(jiǎn)潔而強(qiáng)大的方式來(lái)定義和使用枚舉2023-11-11

