内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python如何實(shí)現(xiàn)aes加密解密-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了Python如何實(shí)現(xiàn)aes加密解密,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)張灣,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):13518219792

引子:

   在windows中python3使用 pycryptodemo 模塊實(shí)現(xiàn)Aes加密解密。Aes加密有多種方式,自己可以上網(wǎng)了解下。 AES是每16位一加密,并且保證key和vi都是16位的。廢話(huà)不多說(shuō)直接上代碼。

import base64
from Crypto.Cipher import AES
from binascii import b2a_hex,a2b_hex
 
 
class PrpCrypt(object):
  def __init__(self,key,iv):
    self.key=key.encode('utf-8')
    self.mode=AES.MODE_CBC
    self.iv=iv.encode('utf-8')
 
  def pad_byte(self, b):
    '''
    1 先計(jì)算所傳入bytes類(lèi)型文本與16的余數(shù)
    2 在將此余數(shù)轉(zhuǎn)成bytes 當(dāng)然用0補(bǔ)位也可以
    3 已知了 余數(shù) 那么就用余數(shù)*被轉(zhuǎn)成的余數(shù),就得到了需要補(bǔ)全的bytes
    4 拼接原有文本和補(bǔ)位
    :param b: bytes類(lèi)型的文本
    :return: 返回補(bǔ)全后的bytes文本
    '''
    bytes_num_to_pad = AES.block_size - (len(b) % AES.block_size)
    # python3 中默認(rèn)unicode轉(zhuǎn)碼
    # 實(shí)際上byte_to_pad 就已經(jīng) 將 數(shù)字轉(zhuǎn)成了unicode 對(duì)應(yīng)的字符 即使你的入?yún)⒄檬?6的倍數(shù),那么bytes也是把列表整體的轉(zhuǎn)碼也是有值的
    # 后邊解密的匿名函數(shù) 拿到最后一個(gè)數(shù)字后,就知道應(yīng)該截取的長(zhǎng)度,在反著切片就行了
    # 這樣保證了數(shù)據(jù)的完整性
    byte_to_pad = bytes([bytes_num_to_pad])
    padding = byte_to_pad * bytes_num_to_pad
    padded = b + padding
    return padded
 
  def encrypt(self,text):
    '''
    1 先生成aes實(shí)例
    2 對(duì)傳入的text轉(zhuǎn)成bytes
    3 對(duì)傳入的text補(bǔ)全
    4 調(diào)用encrypt 加密 得到密文
    5 先將密文轉(zhuǎn)16進(jìn)制,在將16進(jìn)制用base64轉(zhuǎn)碼,然后在將得到的base64解碼
    其實(shí)在步驟4 就已經(jīng)完成了aes加密,我所在的公司加密比較復(fù)雜 ,需要的可以直接返回步驟4的值
 
    :param text:
    :return:
    '''
    cryptor = AES.new(self.key,self.mode,self.iv)
    text = text.encode('utf-8')
    text = self.pad_byte(text)
    self.ciphertext = cryptor.encrypt(text)
    cryptbase64 = base64.b64encode(b2a_hex(self.ciphertext)).decode('utf8')
    return cryptbase64
 
 
  def decrypt(self,text):
    '''
    解密和加密的順序是相反的
    1 定義匿名函數(shù),去掉補(bǔ)位
    2 base64解碼
    3 生成aes實(shí)例
    4 16進(jìn)制轉(zhuǎn)2進(jìn)制
    5 使用decrypt解碼 得到補(bǔ)全的bytes類(lèi)型明文
 
    :param text:
    :return: 解密且去掉補(bǔ)位的明文
    '''
    unpad = lambda s: s[:-ord(s[len(s) - 1:])]
    base64Str = base64.b64decode(text.encode('utf8'))
    cryptor = AES.new(self.key, self.mode, self.iv)
    aesStr = cryptor.decrypt(a2b_hex(base64Str))
    aesStr = str(unpad(aesStr), encoding='utf8')
    return aesStr
if __name__ == '__main__':
  data='sadfsasdgsdfgdsf123'
  pc=PrpCrypt('daajanbaqa654321','1234567890123456')
  redata = pc.encrypt(data)
  print(redata)
  result=pc.decrypt(redata)
  print(result)

當(dāng)前文章:Python如何實(shí)現(xiàn)aes加密解密-創(chuàng)新互聯(lián)
文章出自:http://www.rwnh.cn/article6/posig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、標(biāo)簽優(yōu)化移動(dòng)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
隆德县| 自治县| 临沧市| 秀山| 昌乐县| 和顺县| 绩溪县| 灌云县| 内黄县| 新田县| 江阴市| 密山市| 应城市| 漠河县| 清镇市| 沅江市| 汕头市| 华亭县| 梁平县| 澳门| 沐川县| 大渡口区| 积石山| 同江市| 五台县| 夏津县| 西吉县| 卢龙县| 铁岭市| 定远县| 驻马店市| 广丰县| 常宁市| 长泰县| 巫溪县| 东兴市| 藁城市| 射洪县| 东兴市| 五大连池市| 定陶县|