python3.6 AES 加密解密

本来以为这是个比较简单的东西,网上一搜一大把。搜索结果气的我自己看文档写了一个。
首先安装pycryptodome或者pycryptodomex 用pip 安装,安装之后需要修改包名crypto改为Crypto

import base64
from Crypto.Cipher import AES

'''
采用AES对称加密算法
'''
# str不是32的倍数那就补足为16的倍数
def add_to_32(value):
    while len(value) % 32 != 0:
        value += '\0'
    return str.encode(value)  # 返回bytes
#加密方法
def encrypt_oracle(text):
    # 秘钥
    key = 'lymhqnoetl15321'
    # 待加密文本
    # 初始化加密器
    aes = AES.new(add_to_32(key), AES.MODE_ECB)
    #先进行aes加密
    encrypt_aes = aes.encrypt(add_to_32(text))
    #用base64转成字符串形式
    encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 执行加密并转码返回bytes
    print(encrypted_text)
    return encrypted_text
#解密方法
def decrypt_oralce(text):
    # 秘钥
    key = 'lymhqnoetl15321'
    # 密文
    # 初始化加密器
    aes = AES.new(add_to_32(key), AES.MODE_ECB)
    #优先逆向解密base64成bytes
    base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))
    #执行解密密并转码返回str
    decrypted_text = str(aes.decrypt(base64_decrypted),encoding='utf-8').replace('\0','') 
    return decrypted_text

if __name__ == '__main__':
   # encrypt_oracle()
    encrypt_oracle('2019-12-12')

我是采用ECB模式加密你也可以用其他模式加密,模式区别可以看这篇https://www.cnblogs.com/liangxuehui/p/4651351.html
秘钥加密解密需要统一。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录介绍 1.加密和解密1.1 问答环节1.2 加解密概况 2.对称加密和非对称加密2.1 什么是对称加密2.2 ...
    杨充211阅读 4,158评论 0 6
  • 1. ASCII 编码 ASCII(American Standard Code for Information ...
    s酸菜阅读 12,793评论 0 8
  • 加密的原因:保证数据安全 加密必备要素:1、明文/密文 2、秘钥 3、算法 秘钥:在密码学中是一个定长的字符串...
    Winnifred_阅读 14,513评论 0 3
  • 专业术语(摘自百度百科) 密钥:分为加密密钥和解密密钥。明文:没有进行加密,能够直接代表原文含义的信息。密文:经过...
    Samlss阅读 11,233评论 1 14
  • 最近做项目,需要服务器(java写的)进行AES加密,然后iOS解密。这是背景,然后就出现了java AES加密,...
    伊卡洛斯_路西法阅读 6,348评论 1 3