python版本:3.6.5

首先安装pycryptodome

# pip install pycryptodome

加密方式特别简单,代码如下:

方式一:补0

#!/usr/bin/python
# -*- coding: utf-8 -*-"""补0方式
"""import base64from Crypto.Cipher import AES# 补足字符串长度为16的倍数
def add_to_16(s):while len(s) % 16 != 0:s += '\0'return str.encode(s)  # 返回byteskey = '1234567890123456'  # 密钥长度必须为16、24或32位,分别对应AES-128、AES-192和AES-256
text = 'abcdefg'  # 待加密文本aes = AES.new(str.encode(key), AES.MODE_ECB)  # 初始化加密器,本例采用ECB加密模式
encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding='utf8').replace('\n', '')  # 加密
decrypted_text = str(aes.decrypt(base64.decodebytes(bytes(encrypted_text, encoding='utf8'))).rstrip(b'\0').decode("utf8"))  # 解密print('加密值:', encrypted_text)
print('解密值:', decrypted_text)

结果为:

方式二:pkcs5

#!/usr/bin/python
# -*- coding: utf-8 -*-"""pkcs5补码方式
"""import base64from Crypto.Cipher import AES# 补足字符串长度为16的倍数
def add_to_16(s):while len(s) % 16 != 0:s += (16 - len(s) % 16) * chr(16 - len(s) % 16)return str.encode(s)  # 返回byteskey = '1234567890123456'  # 密钥长度必须为16、24或32位,分别对应AES-128、AES-192和AES-256
text = 'abcdefg'  # 待加密文本aes = AES.new(str.encode(key), AES.MODE_ECB)  # 初始化加密器,本例采用ECB加密模式
encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding='utf8').replace('\n', '')  # 加密
decrypted_text = aes.decrypt(base64.decodebytes(bytes(encrypted_text, encoding='utf8'))).decode("utf8")  # 解密
decrypted_text = decrypted_text[:-ord(decrypted_text[-1])]  # 去除多余补位print('pkcs5加密值:', encrypted_text)
print('pkcs5解密值:', decrypted_text)

结果为:

两种方式加密后的值是不一样的,解密方式也是不一样的。

python3 AES 加解密相关推荐

  1. C语言实现AES加解密

    C语言实现AES加解密 AES算法 具体代码 AES算法 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于 ...

  2. Java code lib aes 加解密

    Java aes 加解密 /*** Created by LvJianwei on 2018/2/8.*/import javax.crypto.Cipher; import javax.crypto ...

  3. 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)...

    近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...

  4. 前端 crypto-js aes 加解密

    背景 前段时间公司做项目,该项目涉及到的敏感数据比较多,经过的一波讨论之后,决定前后端进行接口加密处理,采用的是 AES + BASE64 算法加密~ 网上关于 AES 对称加密的算法介绍看上一篇! ...

  5. 记一次Java AES 加解密 对应C# AES加解密 的一波三折

    最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...

  6. C语言实现AES加解密算法

    C语言实现AES加解密算法 AES加解密 AES加解密 #include <stdio.h> #include <stdint.h> #include <memory.h ...

  7. openssl c++实现bouncycastle中AES加解密

    0x01 为什么要用bouncycastle 先说说JCE(Java Cryptography Extension)是一组包,它们提供用于加密.密钥生成和协商以及 Message Authentica ...

  8. aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...

    # AES加解密类源码 > 根据网络整理 ~~~ /** * Created by PhpStorm. * Power by Mikkle * QQ:776329498 * Date: 2017 ...

  9. Golang AES 加解密

    文章目录 AES 简介 AES 加解密实现 小结 参考文献 AES 简介 利用 Go 提供的 AES 加解密与 Base64 编解码包,我们可以轻松实现 AES 加解密.实现之前,首先了解一下 AES ...

最新文章

  1. Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
  2. Oracle中默认创建的表
  3. css scale 缩放基准点
  4. PyCharm 5 破解注册方法
  5. python记事本_python记事本实现查询替换
  6. dubbo发布webservice服务
  7. 简单搭配(Collocation)隐私声明
  8. python 随机请求头_为了爬虫换个头,我用python实现三种随机请求头方式!
  9. 【图像压缩】基于matlab JEPG图像压缩【含Matlab源码 1167期】
  10. 深入浅出Python——Python高级语法之函数
  11. jlinkV8驱动里面找不到gd32f130c8t6芯片怎么办?keil下载时候报错 dll错误,我刚才找到问题的原因了。就是jlink驱动版本太低,用6.88c就可以了 ,以下是我获得解答链接感谢
  12. 2022最新RTMP+HTTP直播地址汇总(亲测可用)
  13. 计算机实验室安全知识心得体会,实验室安全知识宣传
  14. MySQL逻辑架构及工作流程
  15. 卸载精灵(bue directx) r4.0 完美版 是什么
  16. delete hive_hive执行更新和删除操作
  17. 虚拟机客户端怎么连接服务器,虚拟机客户端连接服务器
  18. Linux入门——与目录相关的一些命令(pwd、ls、cd)及tab和上下方向键的使用
  19. 云原生时代,我们为何离不开混沌工程?
  20. 一句话说清NI公司的LabView、CVI、MeasurementStudio三者之间的区别

热门文章

  1. OpenStack 的单元测试
  2. Ubuntu安装FTP 服务, 实现和Windows的文件互传
  3. PAT A1030 动态规划
  4. iOS学习资源(一)
  5. 分栏报表-物品清单报表实现
  6. nginx 配置文件
  7. FTP软件VSFTP配置文件详解
  8. BeanUtils使用
  9. Scrapy框架基础使用
  10. 版本信息文件、虚拟环境创建