您好,登錄后才能下訂單哦!
1base64
Python內(nèi)置的base64模塊可以實(shí)現(xiàn)base64、base32、base16、base85、urlsafe_base64的編碼解碼,python 3.x通常輸入輸出都是二進(jìn)制形式,2.x可以是字符串形式。
base64模塊的base64編碼、解碼調(diào)用了binascii模塊,binascii模塊中的b2a_base64()函數(shù)用于base64編碼,binascii模塊中的a2b_base64()函數(shù)用于base64解碼。
import base64 s = 'hello, world' base64.b64encode(bytes(s, 'ascii')) b'aGVsbG8sIHdvcmxk' base64.b64decode(base64.b64encode(bytes(s, 'ascii'))) b'hello, world'
2.md5
Python2.x中有md5模塊,此模塊調(diào)用了hashlib模塊,python3.x已中將md5取掉,直接通過調(diào)用hashlib模塊來進(jìn)行md5。Python2.x可以直接使用unicode字符,但3.x中必須使用二進(jìn)制字節(jié)串。
import hashlib m = hashlib.md5() m.update(b'hello, world!') m.hexdigest() '3adbbad1791fbae3ec908894c4963870'
3.sha1
類似于MD5
import hashlib m = hashlib.sha1() m.update(b'hello, world!') m.hexdigest() '1f09d30c707d53f3d16c530dd73d70a6ce7596a9'
4.crc32
計(jì)算指定內(nèi)容的crc32校驗(yàn)值,可以用zlib以及binascii模塊的crc32函數(shù).
import zlib import binascii s = b'hello, world!' zlib.crc32(s) 1486392595 binascii.crc32(s) 1486392595
ps:下面看下Python之加密模塊
hashlib模塊
•加密方式以md5方式加密舉例
•是標(biāo)準(zhǔn)模塊,直接導(dǎo)入即可
•還有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串長(zhǎng)度更長(zhǎng),安全性更高
一、加密步驟
1、字符串先轉(zhuǎn)成二進(jìn)制類型
使用.encode()方法轉(zhuǎn)成二進(jìn)制類型
import hashlib password='123456' print(password.encode())#字符串不能直接加密,要先轉(zhuǎn)成二進(jìn)制類型的才可以加密 #結(jié)果為:b'123456'
2、使用加密方法
使用.hexdigest()方法輸出加密后內(nèi)容
import hashlib password='123456' m=hashlib.md5(password.encode()) #先轉(zhuǎn)成二進(jìn)制,再加密 #print(dir(m)) #由于這個(gè)加密模塊pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用內(nèi)置函數(shù)dir(),使用這條語句就能打印出所有方法了 print(m.hexdigest())
3、打印加密后的內(nèi)容
使用dir()內(nèi)置函數(shù)顯示該變量的所有方法
由于該模塊pycharm無法提供提示方法,即輸入m“.”不出來方法,所以可以使用內(nèi)置函數(shù)dir(),將所有方法打印出來。
#print(dir(m)) #由于這個(gè)加密模塊pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用內(nèi)置函數(shù)dir(),使用這條語句就能打印出所有方法了 print(m.hexdigest())
二、加密相關(guān)
1、檢驗(yàn)加密結(jié)果
•由于md5方式加密完的字符串無論原字符串有多長(zhǎng)都是32位,因此可以使用len()方法檢驗(yàn)是否加密成功:
print(len(m.hexdigest())
2、md5加密之后是不可逆的
•網(wǎng)絡(luò)上可以解密的原理是撞庫(kù),即:將常用的密碼加密完存在數(shù)據(jù)庫(kù)里,然后直接搜庫(kù)。
如果輸入的加密后密碼碰巧數(shù)據(jù)庫(kù)里有,就能把對(duì)應(yīng)的加密前密碼返回給你,并不是真正的解密。
3、其他的加密方式
本文的加密方式以md5方式加密舉例,還有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串長(zhǎng)度更長(zhǎng),安全性更高。
m=hashlib.sha1(password.encode())#不同的加密方式 m=hashlib.sha224(password.encode()) #不同的加密方式 m=hashlib.sha256(password.encode()) #不同的加密方式
三、加鹽
原理:
如果要對(duì)password=123456加密,這個(gè)明文密碼太簡(jiǎn)單,容易撞庫(kù)解密,所以在123456之后隨機(jī)加一個(gè)字符串,比如abc,這樣實(shí)際是對(duì)123456abc進(jìn)行加密,如果不知道abc這個(gè)字符串,反解的可能性降低,安全性更高。這樣的一個(gè)字符串就叫做鹽。
四、實(shí)際應(yīng)用
#實(shí)現(xiàn)加密:傳入一個(gè)值,如果有鹽值,則加鹽加密;否則直接加密 def my_md5(s:str,salt=None): s=str(s) if salt: s=s+salt m=hashlib.md5(s.encode()) return m.hexdigest()
總結(jié)
以上所述是小編給大家介紹的python的一些加密方法及python 加密模塊 ,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。