python AES对称加密
1、首先需要安装第三方库
pip install pycryptodome
2、实例代码,亲测可用
# coding:utf-8
import base64
from Crypto.Cipher import AES
class USE_AES:
    """
    AES
    除了MODE_SIV模式key长度为:32, 48, or 64,
    其余key长度为16, 24 or 32
    详细见AES内部文档
    CBC模式传入iv参数
    本例使用常用的ECB模式
    """
    def __init__(self, key):
        if len(key) > 32:
            key = key[:32]
        self.key = self.to_16(key)
    def to_16(self, key):
        """
        转为16倍数的bytes数据
        :param key:
        :return:
        """
        key = bytes(key, encoding="utf8")
        while len(key) % 16 != 0:
            key += b'\0'
            print("to_16")
        return key  # 返回bytes
    def aes(self):
        return AES.new(self.key, AES.MODE_ECB) # 初始化加密器
    def encrypt(self, text):
        aes = self.aes()
        return str(base64.encodebytes(aes.encrypt(self.to_16(text))),
                   encoding='utf8').replace('\n', '')  # 加密
    def decodebytes(self, text):
        aes = self.aes()
        return str(aes.decrypt(base64.decodebytes(bytes(
            text, encoding='utf-8'))).rstrip(b'\0').decode("utf-8"))  # 解密
if __name__ == '__main__':
    # aes_test = USE_AES("e9abe30a15422ae73bc39aa89ccd75d52f72c3ff")
    aes_test = USE_AES("e9fc52c72346ecc9")
    encrypt = aes_test.encrypt('{"data":{"type":"html","mobile":"17100000002"}}')
    decode = aes_test.decodebytes('TVaxmOv920UbPyV7NVDbv5ApDPzaL3P4w3MC8b2XvxqHUCwAi58m0D2IR+f7wrmH')
    print(encrypt)
    print(decode)
python AES对称加密的更多相关文章
- 【Python】Python AES 对称加密示例
		代码: import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex AES_SECRET_KEY = ... 
- AES对称加密和解密
		package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ... 
- AES对称加密
		import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre ... 
- java的AES对称加密和解密,有偏移量
		import java.math.BigDecimal; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; i ... 
- AES对称加密和解密(转)
		AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ... 
- 正确使用AES对称加密
		正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ... 
- JAVA中AES对称加密和解密
		AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ... 
- AES对称加密解密类
		import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.Se ... 
- JAVA中AES对称加密和解密以及与Python兼容
		引言:本文主要解决Java中用AES加密及解密,同时可通过Python脚本对Java加密后的字符进行解密的操作. 由于近期工作中用到需要使用Java对一串密钥进行加密,并且后台通过Python语言读取 ... 
随机推荐
- CentOS7服务器查看相关配置命令
			CPU个数:(base) [jiangshan@localhost ~]$ grep 'physical id' /proc/cpuinfo | sort -u | wc -l2CPU核数:(base ... 
- Nginx 系列教程
			Nginx(一):Nginx介绍 Nginx(二):编译安装Nginx及参数说明 Nginx(三):nginx.conf配置文件说明 [1] 配置参数说明 Nginx(三):nginx.conf配置文 ... 
- 如何在mongoengine中使用referencefield引用本类
			引用:原文 from mongoengine import * class Employee(Document): name = StringField() boss = ReferenceField ... 
- windows下使用linux terminal
			windows下使用linux terminal 1.下载安装包 2.安装 3.解决乱码 0.前言 其实,写这个的目的是怕自己忘了,方便以后配置和分享 1.下载安装包 安装包下载地址: http:// ... 
- ALV报表——抓取工单长文
			ABAP抓取工单长文 运行效果: 代码: *&---------------------------------------------------------------------* *& ... 
- Linux 内核错误码
			#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such ... 
- 集合并卷积的三种求法(分治乘法,快速莫比乌斯变换(FMT),快速沃尔什变换(FWT))
			也许更好的阅读体验 本文主要内容是对武汉市第二中学吕凯风同学的论文<集合幂级数的性质与应用及其快速算法>的理解 定义 集合幂级数 为了更方便的研究集合的卷积,引入集合幂级数的概念 集合幂级 ... 
- jmeter保存返回数据到csv
			添加一个线程组,然后右键选择“正则表达式提取器” 配置正则表达式: 添加添加后置处理器beanshell postprocessor: 保存提取的数据: 代码: FileWriter fstream ... 
- VS.NET(C#)--2.9_HTML服务器控件案例
			HTML服务区控件案例 UI设计视图 UI源码视图 <> 
- win7用驱动精灵安装了bcm94352ac蓝牙驱动后还是不能用蓝牙的解决方法
			驱动精灵安装了驱动后,设备管理器处显示Bluetooth USB,但是没法用蓝牙,找不到蓝牙图标,后来在华硕官方下载了win7的Broadcom 蓝牙驱动程序装上之后就好了 
