aes在python中怎么實現(xiàn)一個加密功能?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
“專業(yè)、務實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設服務商、專業(yè)的互聯(lián)網(wǎng)服務提供商! 專注于成都網(wǎng)站制作、網(wǎng)站建設、外貿(mào)網(wǎng)站建設、軟件開發(fā)、設計服務業(yè)務。我們始終堅持以客戶需求為導向,結合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領市場!高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。這個標準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。---百度百科
本科的時候弄過DES加密算法加密計算機文件,而DES加密算法現(xiàn)在基本處于被廢棄的狀態(tài),所以現(xiàn)在想試試更高級一點的。
DES加密算法可發(fā)展為3DES加密算法,后來又被升級為AES加密算法,加長了密鑰長度,也就增加了暴力破解的難度。
本次使用Python進行AES的加密解密
import hashlib from Crypto.Cipher import AES import base64 class prpcrypt(): def __init__(self,key): self.key = key # 因為在python3中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) # 去掉補足的空格用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("長度:%s"% len(d))
看完上述內(nèi)容,你們掌握aes在python中怎么實現(xiàn)一個加密功能的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站標題:aes在python中怎么實現(xiàn)一個加密功能-創(chuàng)新互聯(lián)
文章路徑:http://bm7419.com/article30/igppo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、微信小程序、網(wǎng)站設計、網(wǎng)站設計公司、建站公司、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容