在Python中使用M2Crypto模塊實現(xiàn)AES加密的教程
AES(英文:Advanced Encryption Standard,中文:高級加密標準),是一種區(qū)塊加密標準。AES將原始數(shù)據(jù)分成多個4×4字節(jié)矩陣來處理,通過預(yù)先定義的密鑰對每個字節(jié)矩陣中的每個字節(jié)進行異或、替換、移位以及線性變換操作來達到加密的目的。密鑰長度可以是128,192或256比特。
下面是一個利用Python M2Crypto庫,并使用aes_128_ecb算法進行加密和解密的例子。首先介紹一下幾個關(guān)鍵的點:
1、iv(Initialization vector),即初始化向量,用于避免相同的數(shù)據(jù)多次加密都產(chǎn)生相同的密文。最大長度為16字節(jié),超出16字節(jié)部分會被忽略,最好是隨機產(chǎn)生以增加加密的強度。
2、ECB (Electronic codebook,ECB),它會對每個4×4字節(jié)矩陣都用同一個密鑰進行加密,而且沒有使用 IV。優(yōu)點是每個字節(jié)矩陣都可以獨立進行加密,因此可以同時對每個字節(jié)矩陣進行加密;缺點是對于相關(guān)的數(shù)據(jù),加密之后的密文都是一樣的。
3、Padding,由于AES是以4×4字節(jié)矩陣作為單位進行處理,因為待加密數(shù)據(jù)必須是16的倍數(shù),若不足16的倍數(shù),將會進行填充操作。aes_128_ecb算法加密默認填充模式是pkcs5。
from M2Crypto.EVP import Cipher from M2Crypto import m2 from M2Crypto import util ENCRYPT_OP = 1 # 加密操作 DECRYPT_OP = 0 # 解密操作 iv = '\0' * 16 # 初始化變量,對于aes_128_ecb算法無用 PRIVATE_KEY = 'dd7fd4a156d28bade96f816db1d18609' # 密鑰 def Encrypt(data): '使用aes_128_ecb算法對數(shù)據(jù)加密' cipher = Cipher(alg = 'aes_128_ecb', key = PRIVATE_KEY, iv = iv, op = ENCRYPT_OP) buf = cipher.update(data) buf = buf + cipher.final() del cipher # 將明文從字節(jié)流轉(zhuǎn)為16進制 output = '' for i in buf: output += '%02X' % (ord(i)) return output def Decrypt(data): '使用aes_128_ecb算法對數(shù)據(jù)解密' # 將密文從16進制轉(zhuǎn)為字節(jié)流 data = util.h2b(data) cipher = Cipher(alg = 'aes_128_ecb', key = PRIVATE_KEY, iv = iv, op = DECRYPT_OP) buf = cipher.update(data) buf = buf + cipher.final() del cipher return buf
- Python3加密解密庫Crypto的RSA加解密和簽名/驗簽實現(xiàn)方法實例
- Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加簽驗簽
- Python3.7基于hashlib和Crypto實現(xiàn)加簽驗簽功能(實例代碼)
- python3安裝crypto出錯及解決方法
- 下載python中Crypto庫報錯:ModuleNotFoundError: No module named ‘Crypto’的解決
- Python基于pycrypto實現(xiàn)的AES加密和解密算法示例
- python的Crypto模塊實現(xiàn)AES加密實例代碼
- python3.6 實現(xiàn)AES加密的示例(pyCryptodome)
- python Crypto模塊的安裝與使用方法
- windows下python安裝paramiko模塊和pycrypto模塊(簡單三步)
- Python使用PyCrypto實現(xiàn)AES加密功能示例
- Python使用Pycrypto庫進行RSA加密的方法詳解
- python加密解密庫cryptography使用openSSL生成的密匙加密解密
相關(guān)文章
Python生命游戲?qū)崿F(xiàn)原理及過程解析(附源代碼)
這篇文章主要介紹了Python生命游戲?qū)崿F(xiàn)原理及過程解析(附源代碼),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Pycharm直接使用遠程服務(wù)器代碼并調(diào)試的解決方法
這篇文章主要介紹了Pycharm直接使用遠程服務(wù)器代碼并調(diào)試的解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02
總結(jié)python多進程multiprocessing的相關(guān)知識
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著python multiprocessing多進程的相關(guān)知識展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Python實現(xiàn)12306火車票搶票系統(tǒng)
這篇文章主要介紹了Python實現(xiàn)12306火車票搶票系統(tǒng),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07

