码迷,mamicode.com
首页 > 编程语言 > 详细

python 实现AES加密和解密

时间:2019-01-17 14:06:28      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:byte   mod   sdn   解密   类型   sds   偏移量   加密   使用   

参考 https://blog.csdn.net/zhchs2012/article/details/79032656

AES加密算法是一种对称加密算法, 他有一个密匙, 即用来加密, 也用来解密

import base64
from 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)
    # 字符串补位
    cipher = AES.new(key.encode(‘utf8‘), AES.MODE_CBC, vi.encode(‘utf8‘))
    encryptedbytes = cipher.encrypt(data.encode(‘utf8‘))
    # 加密后得到的是bytes类型的数据
    encodestrs = base64.b64encode(encryptedbytes)
    # 使用Base64进行编码,返回byte字符串
    enctext = encodestrs.decode(‘utf8‘)
    # 对byte字符串按utf-8进行解码
    return enctext


def AES_Decrypt(key, data):
    vi = ‘0102030405060708‘
    data = data.encode(‘utf8‘)
    encodebytes = base64.decodebytes(data)
    # 将加密数据转换位bytes类型数据
    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)
    # 去补位
    text_decrypted = text_decrypted.decode(‘utf8‘)
    return text_decrypted


key = ‘0CoJUm6Qyw8W8jud‘
data = ‘sdadsdsdsfd‘
AES_Encrypt(key, data)
enctext = AES_Encrypt(key, data)
print(enctext)
text_decrypted = AES_Decrypt(key, enctext)
print(text_decrypted)

hBXLrMkpkBpDFsf9xSRGQQ==
sdadsdsdsfd

  

python 实现AES加密和解密

标签:byte   mod   sdn   解密   类型   sds   偏移量   加密   使用   

原文地址:https://www.cnblogs.com/frank-shen/p/10281708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!