Python AES加密實(shí)例解析
本文主要是對(duì)aes加密技術(shù)做一個(gè)簡(jiǎn)要分析,然后使用Python實(shí)現(xiàn),具體介紹如下。
AES,是美國(guó)聯(lián)邦政府采用的一種加密技術(shù),AES有幾個(gè)模式,其中CBC模式是公認(rèn)的安全性最好的模式,被TLS所采用。
加密與解密雙方需確定好key,key的長(zhǎng)度可以是16位,24位,32位中的一個(gè),分別對(duì)應(yīng)了不同的算法。
如果key的長(zhǎng)度是是16位的,那么被加密的明文長(zhǎng)度必須是16的整數(shù)倍,但實(shí)際使用中,這么巧的事情很難發(fā)生,因此就需要對(duì)明文進(jìn)行填充,最常用的方式就是填充\0,等到解密的時(shí)候,再把解密出來(lái)的明文右側(cè)的\0全部去掉。你也許會(huì)關(guān)心,如果我明文最右側(cè)原本就是一堆的\0,那么這么搞,豈不是要出問(wèn)題么,是滴,確實(shí)會(huì)出問(wèn)題,但這樣的明文用來(lái)做什么呢?你想多了,這樣的明文你這輩子恐怕都不會(huì)遇到。
下面看一段python示例代碼,演示如何使用AES加密技術(shù)進(jìn)行加密和解密
#coding=utf-8
'''''
加密的一方和解密的一方必須提前確定好key值
'''
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class MyCrypto():
def __init__(self, key):
self.key_len = len(key)
if not self.key_len == 16 and not self.key_len == 24 and not self.key_len == 32:
raise Exception("length of key is wrong")
self.key = key
self.mode = AES.MODE_CBC #這種模式更加安全
def encrypt(self, text):
'''''
被加密的明文長(zhǎng)度必須是key長(zhǎng)度的整數(shù)倍,如果不夠,則用\0進(jìn)行填充
轉(zhuǎn)成16進(jìn)制字符串,是因?yàn)楸苊獠豢梢?jiàn)的ascii在顯示的時(shí)候搗亂
'''
cryptor = AES.new(self.key, self.mode, self.key)
count = len(text)
add = self.key_len - (count % self.key_len)
text = text + ('\0' * add)
self.ciphertext = cryptor.encrypt(text)
return b2a_hex(self.ciphertext)
def decrypt(self, text):
'''''
解密后需注意,加密時(shí)有可能填充\0,因此要去掉右側(cè)的\0
'''
cryptor = AES.new(self.key, self.mode, self.key)
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip('\0')
if __name__ == '__main__':
mc = MyCrypto("kwsy_zds20160822")
e = mc.encrypt("張東升")
d = mc.decrypt(e)
print e,d
總結(jié)
以上就是本文關(guān)于Python AES加密實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Python使用PyCrypto實(shí)現(xiàn)AES加密功能示例
- 使用Python進(jìn)行AES加密和解密的示例代碼
- Python AES加密模塊用法分析
- 在Python中使用M2Crypto模塊實(shí)現(xiàn)AES加密的教程
- python3.6 實(shí)現(xiàn)AES加密的示例(pyCryptodome)
- python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析
- python實(shí)現(xiàn)RSA加密(解密)算法
- python字符串加密解密的三種方法分享(base64 win32com)
- python中base64加密解密方法實(shí)例分析
- python實(shí)現(xiàn)AES和RSA加解密的方法
相關(guān)文章
Python庫(kù)學(xué)習(xí)Tkinter制作GUI個(gè)性簽名設(shè)計(jì)軟件
Tkinter 是 Python 中的標(biāo)準(zhǔn) GUI 庫(kù),使用 Tkinter 可以快速地創(chuàng)建 GUI 應(yīng)用程序。今天我們打算再用一個(gè)小案例,帶大家加深對(duì)Tkinter的理解2021-09-09
利用Pandas 創(chuàng)建空的DataFrame方法
下面小編就為大家分享一篇利用Pandas 創(chuàng)建空的DataFrame方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
MoviePy簡(jiǎn)介及Python視頻剪輯自動(dòng)化
MoviePy是一個(gè)用于視頻編輯的Python模塊,可用于基本操作(如剪切、拼接、字幕插入)、視頻合成、視頻處理或創(chuàng)建高級(jí)效果等。本文給大家介紹MoviePy簡(jiǎn)介及Python視頻剪輯自動(dòng)化的相關(guān)知識(shí),感興趣的朋友一起看看吧2020-12-12
分享20個(gè)Pandas短小精悍的數(shù)據(jù)操作
本文為大家整理了一個(gè)pandas數(shù)據(jù)操作的大集合,共20個(gè)功能,個(gè)個(gè)短小精悍,一次讓你愛(ài)個(gè)夠,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-04-04
Python用正則表達(dá)式實(shí)現(xiàn)爬取古詩(shī)文網(wǎng)站信息
這篇文章主要給大家介紹了關(guān)于Python如何利用正則表達(dá)式爬取爬取古詩(shī)文網(wǎng)站信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12

