亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Python實(shí)現(xiàn)AES加密,解密的兩種方法

瀏覽:2日期:2022-07-09 10:52:14

第一種

import base64from Crypto.Cipher import AES# 密鑰(key), 密斯偏移量(iv) CBC模式加密def AES_Encrypt(key, data): vi = ’0102030405060708’ pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16) data = pad(data) # 字符串補(bǔ)位 cipher = AES.new(key.encode(’utf8’), AES.MODE_CBC, vi.encode(’utf8’)) encryptedbytes = cipher.encrypt(data.encode(’utf8’)) # 加密后得到的是bytes類型的數(shù)據(jù) encodestrs = base64.b64encode(encryptedbytes) # 使用Base64進(jìn)行編碼,返回byte字符串 enctext = encodestrs.decode(’utf8’) # 對(duì)byte字符串按utf-8進(jìn)行解碼 return enctextdef AES_Decrypt(key, data): vi = ’0102030405060708’ data = data.encode(’utf8’) encodebytes = base64.decodebytes(data) # 將加密數(shù)據(jù)轉(zhuǎn)換位bytes類型數(shù)據(jù) cipher = AES.new(key.encode(’utf8’), AES.MODE_CBC, vi.encode(’utf8’)) text_decrypted = cipher.decrypt(encodebytes) unpad = lambda s: s[0:-s[-1]] text_decrypted = unpad(text_decrypted) # 去補(bǔ)位 text_decrypted = text_decrypted.decode(’utf8’) return text_decryptedkey = ’0CoJUm6Qyw8W8jud’ #自己密鑰data = ’sdadsdsdsfd’ #需要加密的內(nèi)容AES_Encrypt(key, data)enctext = AES_Encrypt(key, data)print(enctext)text_decrypted = AES_Decrypt(key, enctext)print(text_decrypted)

第二種

#!/usr/bin/env python#encoding=‘utf-8’from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hexfrom Crypto import Randomclass PrpCrypt(object): def __init__(self, key): self.key = key.encode(’utf-8’) self.mode = AES.MODE_CBC self.iv = Random.new().read(AES.block_size) # 加密函數(shù),如果text不足16位就用空格補(bǔ)足為16位, # 如果大于16當(dāng)時(shí)不是16的倍數(shù),那就補(bǔ)足為16的倍數(shù)。 def encrypt(self, text): text = text.encode(’utf-8’) cryptor = AES.new(self.key, self.mode,self.iv) # 這里密鑰key 長(zhǎng)度必須為16(AES-128), # 24(AES-192),或者32 (AES-256)Bytes 長(zhǎng)度 # 目前AES-128 足夠目前使用 length = 16 count = len(text) if count < length: add = (length - count) # 0 backspace # text = text + (’0’ * add) text = text + (’0’ * add).encode(’utf-8’) elif count > length: add = (length - (count % length)) # text = text + (’0’ * add) text = text + (’0’ * add).encode(’utf-8’) self.ciphertext = cryptor.encrypt(text) # 因?yàn)锳ES加密時(shí)候得到的字符串不一定是ascii字符集的,輸出到終端或者保存時(shí)候可能存在問題 # 所以這里統(tǒng)一把加密后的字符串轉(zhuǎn)化為16進(jìn)制字符串 return b2a_hex(self.ciphertext) # 解密后,去掉補(bǔ)足的空格用strip() 去掉 def decrypt(self, text): cryptor = AES.new(self.key, self.mode, self.iv) plain_text = cryptor.decrypt(a2b_hex(text)) # return plain_text.rstrip(’0’) return bytes.decode(plain_text).rstrip(’0’)if __name__ == ’__main__’: pc = PrpCrypt(’0CoJUm6Qyw8W8jud’) # 初始化密鑰 data = input('請(qǐng)輸入待加密數(shù)據(jù):')# e = pc.encrypt(data) # 加密 d = pc.decrypt(e).encode() # 解密 print('加密:', e) print('解密:', d)

以上就是Python實(shí)現(xiàn)AES加密,解密的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于Python實(shí)現(xiàn)AES加密,解密的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产性生大片免费观看性 | 在线观看一区二区精品视频 | 欧美国产人妖另类色视频 | 国产露脸无套在线观看 | 欧美日韩亚毛片免费观看 | 男人狂躁女人下面视频免费观看 | 性感美女香蕉视频 | 综合久久99久久99播放 | 2022中文字字幕久亚洲 | 91久久精一区二区三区大全 | 国产一区亚洲二区三区毛片 | 亚洲一区视频在线播放 | 亚洲午夜精品久久久久久成年 | 国产三级a三级三级午夜 | 免费一级欧美片在线观免看 | 青草视频在线观看免费资源 | 99视频在线看观免费 | 国产精品久久久久久久hd | 玖玖爱zh综合伊人久久 | 黄色免费在线网站 | 亚洲 自拍 欧美 另类小说 | 国产免费av片在线观看 | 国产4p露脸在线观看 | 国产精品99久久免费黑人 | 精品国产香蕉伊思人在线 | 在线欧美三级 | 国产三级成人 | 1024免费永久福利视频 | 午夜精品久久久久久久久 | 国产免费高清mv视频在线观看 | 日本黄色大片 | 91最新视频在线观看 | 999毛片免费观看 | 久久精品免费电影 | 国产亚洲精品一区二区久久 | 狠狠色噜噜狠狠狠97影音先锋 | 国产一区二区三区在线观看影院 | 成人性生活免费视频 | 日韩欧美精品中文字幕 | 欧美成人禁片在线观看俄罗斯 | 青青草国产免费国产 |