日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

在Python中使用M2Crypto模塊實(shí)現(xiàn)AES加密的教程

系統(tǒng) 1812 0

?AES(英文:Advanced Encryption Standard,中文:高級(jí)加密標(biāo)準(zhǔn)),是一種區(qū)塊加密標(biāo)準(zhǔn)。AES將原始數(shù)據(jù)分成多個(gè)4×4字節(jié)矩陣來(lái)處理,通過(guò)預(yù)先定義的密鑰對(duì)每個(gè)字節(jié)矩陣中的每個(gè)字節(jié)進(jìn)行異或、替換、移位以及線性變換操作來(lái)達(dá)到加密的目的。密鑰長(zhǎng)度可以是128,192或256比特。
??? 下面是一個(gè)利用Python M2Crypto庫(kù),并使用aes_128_ecb算法進(jìn)行加密和解密的例子。首先介紹一下幾個(gè)關(guān)鍵的點(diǎn):
1、iv(Initialization vector),即初始化向量,用于避免相同的數(shù)據(jù)多次加密都產(chǎn)生相同的密文。最大長(zhǎng)度為16字節(jié),超出16字節(jié)部分會(huì)被忽略,最好是隨機(jī)產(chǎn)生以增加加密的強(qiáng)度。
2、ECB (Electronic codebook,ECB),它會(huì)對(duì)每個(gè)4×4字節(jié)矩陣都用同一個(gè)密鑰進(jìn)行加密,而且?]有使用 IV。優(yōu)點(diǎn)是每個(gè)字節(jié)矩陣都可以獨(dú)立進(jìn)行加密,因此可以同時(shí)對(duì)每個(gè)字節(jié)矩陣進(jìn)行加密;缺點(diǎn)是對(duì)于相關(guān)的數(shù)據(jù),加密之后的密文都是一樣的。
3、Padding,由于AES是以4×4字節(jié)矩陣作為單位進(jìn)行處理,因?yàn)榇用軘?shù)據(jù)必須是16的倍數(shù),若不足16的倍數(shù),將會(huì)進(jìn)行填充操作。aes_128_ecb算法加密默認(rèn)填充模式是pkcs5。
?

            
from M2Crypto.EVP import Cipher 
from M2Crypto import m2 
from M2Crypto import util 
  
ENCRYPT_OP = 1 # 加密操作 
DECRYPT_OP = 0 # 解密操作 
  
iv = '\0' * 16 # 初始化變量,對(duì)于aes_128_ecb算法無(wú)用 
PRIVATE_KEY = 'dd7fd4a156d28bade96f816db1d18609' # 密鑰 
  
def Encrypt(data): 
 '使用aes_128_ecb算法對(duì)數(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進(jìn)制 
 output = '' 
 for i in buf: 
  output += '%02X' % (ord(i)) 
 return output 
  
def Decrypt(data): 
 '使用aes_128_ecb算法對(duì)數(shù)據(jù)解密' 
 # 將密文從16進(jìn)制轉(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

          


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 文化| 涿州市| 沾化县| 拜城县| 茌平县| 铁岭县| 寻乌县| 上杭县| 仁怀市| 名山县| 余庆县| 宜昌市| 长宁县| 云龙县| 噶尔县| 曲麻莱县| 拉萨市| 乐亭县| 军事| 慈溪市| 孟村| 开封市| 轮台县| 临清市| 册亨县| 平顺县| 德清县| 水城县| 宁明县| 阿瓦提县| 山东省| 扶风县| 栾川县| 榆林市| 商城县| 鄱阳县| 山西省| 通渭县| 罗城| 开封市| 广宗县|