1. 程式人生 > 程式設計 >python encrypt 實現AES加密的例項詳解

python encrypt 實現AES加密的例項詳解

AES加密方式有五種ECB,CBC,CTR,CFB,OFB

從安全性角度推薦cbc演算法

windows 下安裝 : pip install pycryptodome

linux 下安裝 : pip install pycrypto

cbc加密需要一個十六位的key 和一個十六位的iv(偏移量)

ecb加密不需要iv

aes cbc 加密的python實現

from Crypto.Cipher import AES
from binascii import b2a_hex,a2b_hex

# 如果text不足十六位的倍數用空格補充
def add_to_16(text):
  if len(text.encode('utf8')) % 16:
    add = 16 - (len(text.encode('utf8')) % 16)
  else:
    add = 0
  text = text + '\0' * add
  return text

# 加密
def encrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_CBC
  iv = b'qqqqqqqqqqqqqqqq'
  text = add_to_16(text)
  cryptos = AES.new(key,mode,iv)
  cipher_text = cryptos.encrypt(text)
  # 因為AES加密後的字串不一定是ascii字符集的,輸出儲存可能存在問題,所以這裡轉為16進位制字串
  return b2a_hex(cipher_text)

# 解密後去掉空格
def decrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_CBC
  iv = b'qqqqqqqqqqqqqqqq'
  cryptos = AES.new(key,iv)
  plain_text = cryptos.decrypt(a2b_hex(text))
  return bytes.decode(plain_text).rstrip('\0')

if __name__ == '__main__':
  a = encrypt('hello')
  b = decrypt(a)
  print('加密',a)
  print('解密',b)

aes ecb加密, 沒有偏移量iv

from Crypto.Cipher import AES
from binascii import b2a_hex,a2b_hex

# 如果text不足十六位的倍數用空格補充
def add_to_16(text):
  if len(text.encode('utf8')) % 16:
    add = 16 - (len(text.encode('utf8')) % 16)
  else:
    add = 0
  text = text + '\0' * add
  return text

# 加密
def encrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_ECB
  text = add_to_16(text)
  cryptos = AES.new(key,mode)
  cipher_text = cryptos.encrypt(text)
  # 因為AES加密後的字串不一定是ascii字符集的,輸出儲存可能存在問題,所以這裡轉為16進位制字串
  return b2a_hex(cipher_text)

# 解密後去掉空格
def decrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_ECB
  cryptos = AES.new(key,mode)
  plain_text = cryptos.decrypt(a2b_hex(text))
  return bytes.decode(plain_text).rstrip('\0')

if __name__ == '__main__':
  a = encrypt('hello')
  b = decrypt(a)
  print('加密',b)

到此這篇關於python encrypt 實現AES加密的例項詳解的文章就介紹到這了,更多相關python encrypt 實現AES加密內容請搜素我們以前的文章或下面相關文章,希望大家以後多多支援我們!