分享一個(gè)python的aes加密代碼
高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,縮寫:AES),在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過(guò)五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱密鑰加密中最流行的算法之一。---百度百科
本科的時(shí)候弄過(guò)DES加密算法加密計(jì)算機(jī)文件,而DES加密算法現(xiàn)在基本處于被廢棄的狀態(tài),所以現(xiàn)在想試試更高級(jí)一點(diǎn)的。
DES加密算法可發(fā)展為3DES加密算法,后來(lái)又被升級(jí)為AES加密算法,加長(zhǎng)了密鑰長(zhǎng)度,也就增加了暴力破解的難度。
本次使用Python進(jìn)行AES的加密解密
import hashlib from Crypto.Cipher import AES import base64 class prpcrypt(): def __init__(self,key): self.key = key # 因?yàn)樵趐ython3中AES傳入?yún)?shù)的參數(shù)類型存在問題,需要更換為 bytearray , 所以使用encode編碼格式將其轉(zhuǎn)為字節(jié)格式(linux系統(tǒng)可不用指定編碼) IV = 16 * '\x00' self.iv=IV.encode("utf-8") self.mode = AES.MODE_CBC self.BS = AES.block_size self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS) self.unpad = lambda s: s[0:-ord(s[-1])] # 加密 def encrypt(self, text): text = self.pad(text).encode("utf-8") cryptor = AES.new(self.key, self.mode, self.iv) # 目前AES-128 足夠目前使用(CBC加密) ciphertext = cryptor.encrypt(text) # base64加密 return base64.b64encode(bytes(ciphertext)) # 解密 def decrypt(self, text): # base64解密 text = base64.b64decode(text) cryptor = AES.new(self.key, self.mode, self.iv) # CBC解密 plain_text = cryptor.decrypt(text) # 去掉補(bǔ)足的空格用strip() 去掉 return self.unpad(bytes.decode(plain_text).rstrip('\0')) # 解密字節(jié)??? def gen_binsha(data): shavalue = hashlib.sha256() shavalue.update(data) return shavalue.digest() if __name__ == '__main__': key='78f40cecf89' key=gen_binsha(key.encode('utf-8')) pc = prpcrypt(key=key) # 初始化密鑰 和 iv text='qwerqwerkkk12345' e = pc.encrypt(text) # 加密 d = pc.decrypt(e) # 解密 print("加密:%s" % e) print("解密:%s"% d) print("長(zhǎng)度:%s"% len(d))
以上就是分享一個(gè)python的aes加密代碼的詳細(xì)內(nèi)容,更多關(guān)于python的aes加密代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python 實(shí)現(xiàn)aes256加密
- Python常用base64 md5 aes des crc32加密解密方法匯總
- Python實(shí)現(xiàn)AES加密,解密的兩種方法
- Python實(shí)現(xiàn)aes加密解密多種方法解析
- Python實(shí)現(xiàn)常見的幾種加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
- Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加簽驗(yàn)簽
- python實(shí)現(xiàn)AES加密與解密
- python實(shí)現(xiàn)AES加密和解密
- Python3對(duì)稱加密算法AES、DES3實(shí)例詳解
- 使用Python進(jìn)行AES加密和解密的示例代碼
相關(guān)文章
Python GUI自動(dòng)化實(shí)現(xiàn)繞過(guò)驗(yàn)證碼登錄
這篇文章主要介紹了python GUI自動(dòng)化實(shí)現(xiàn)繞過(guò)驗(yàn)證碼登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01解決Python 寫文件報(bào)錯(cuò)TypeError的問題
這篇文章主要介紹了解決Python 寫文件報(bào)錯(cuò)TypeError的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10python爬蟲基礎(chǔ)教程:requests庫(kù)(二)代碼實(shí)例
這篇文章主要介紹了python爬蟲基礎(chǔ)教程:requests庫(kù)(二),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python標(biāo)準(zhǔn)庫(kù)time使用方式詳解
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)time使用方式詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07