利用Python 生成hash值
生活随笔
收集整理的這篇文章主要介紹了
利用Python 生成hash值
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、介紹
如果在Python中需要對(duì)用戶(hù)輸入的密碼或者其他內(nèi)容進(jìn)行加密,首選的方法是生成hash值。
在Python中可以利用二個(gè)模塊來(lái)進(jìn)行:
- crypt
- hashlib
二、crypt模塊
(一)crypt的主要方法和常量
| crypt(…) | 方法 | 對(duì)指定內(nèi)容進(jìn)行hash加密 |
| methods(…) | 方法 | 返回可以用到的加密算法 |
| mksalt(…) | 方法 | 根據(jù)加密算法生成salt |
| methods(…) | 方法 | 返回可用加密算法的列表 |
| METHOD_MD5 | 常量 | md5加密算法 |
| METHOD_SHA256 | 常量 | sha256加密算法 |
| METHOD_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的主要方法和常量
| md5(…) | 利用md5算法加密 |
| sha1(…) | 利用sha1算法加密 |
| sha224(…) | 利用sha224算法加密 |
| sha256(…) | 利用sha256算法加密 |
| sha384(…) | 利用sha384算法加密 |
| sha512(…) | 利用sha512算法加密 |
**(二)Hash對(duì)象特有的方法
如果你利用hashlib生成了一個(gè)Hash對(duì)象,那么這個(gè)Hash對(duì)象會(huì)包含如下方法:
| 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方法
from hashlib import md5 from hashlib import sha1 from hashlib import sha224 from hashlib import sha384 from hashlib import sha512 import hashlibdef hashForString(method,srcbyte):srcbyte = srcbyte.encode('gb2312')testnew = hashlib.new(method,data=srcbyte).hexdigest()print(testnew)if method == 'md5':m = md5()#生成hash對(duì)象后,用update方法對(duì)字符串進(jìn)行md5加密的更新處理m.update(srcbyte)srcbyte = m.hexdigest()elif method == 'sha1':s = sha1()s.update(srcbyte)srcbyte = s.hexdigest()elif method == 'sha224':s = sha224()s.update(srcbyte)srcbyte = s.hexdigest()elif method == 'sha384':s = sha384()s.update(srcbyte)srcbyte = s.hexdigest()elif method == 'sha1':s = sha512()s.update(srcbyte)srcbyte = s.hexdigest()return srcbyte print(hashForString('md5','math'))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é)
以上是生活随笔為你收集整理的利用Python 生成hash值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: gbase 导出_gbase 通过 gc
- 下一篇: python - 根据表达式打印真值表