Python使用AES算法进行加解密
本文要点在于Python扩展库pycrypto实现了大量密码学算法,可以拿来直接使用。
import string
import random
from Crypto.Cipher import AES
def keyGenerater(length):
'''生成指定长度的秘钥'''
if length not in (16, 24, 32):
return None
x = string.ascii_letters+string.digits
return ''.join([random.choice(x) for i in range(length)])
def encryptor_decryptor(key, mode):
return AES.new(key, mode, b'0000000000000000')
def AESencrypt(key, mode, text):
encryptor = encryptor_decryptor(key, mode)
return encryptor.encrypt(text)
def AESdecrypt(key, mode, text):
decryptor = encryptor_decryptor(key, mode)
return decryptor.decrypt(text)
if __name__ == '__main__':
text = '董付国 《Python程序设计》系列教材,清华大学出版社'
key = keyGenerater(16)
mode = random.choice((AES.MODE_CBC, AES.MODE_CFB, AES.MODE_ECB, AES.MODE_OFB))
if not key:
print('Something is wrong.')
else:
print('key:', key)
print('mode:', mode)
print('Before encryption:', text)
#明文必须以字节串形式,且长度为16的倍数
text_encoded = text.encode()
text_length = len(text_encoded)
padding_length = 16 - text_length%16
text_encoded = text_encoded + b'0'*padding_length
text_encrypted = AESencrypt(key, mode, text_encoded)
print('After encryption:', text_encrypted)
text_decrypted =AESdecrypt(key, mode, text_encrypted)
print('After decryption:', text_decrypted.decode()[:-padding_length])
代码连续运行2次的结果如下:
= RESTART: C:\Python 3.5\tttt.py =
key: pIfvcrQ7P1N4OKmR
mode: 2
Before encryption: 董付国 《Python程序设计》系列教材,清华大学出版社
After encryption: b";\xe8\x01\xd5\xc38e'\x1b\xb0[\x96u\xdd#y\xf4\xa1\x17y\x15\r5-\xc3\x1c\xe4\x9c-8\xef\xac@\xb7v\x92LN\x1f~\xe6\xd0U\t\xd6;C\x92|\xa0\x1e\xcf\xff\xb5\xeb\xf6cbU\xdc\xa0\xc6\x0ceoU4\x8f\x9f\xec\x0b\xc3\xd2\xfegT\xdd\xc5\x12<"
After decryption: 董付国 《Python程序设计》系列教材,清华大学出版社
>>>
= RESTART: C:\Python 3.5\tttt.py =
key: JH9rdP86pwHc5f0g
mode: 2
Before encryption: 董付国 《Python程序设计》系列教材,清华大学出版社
After encryption: b't\x04\xf6\x9d\xfc\x14z\xb2w\x82\xf8\xe8)\t\x84\x0cb\x15\x8c\xfc\xb7\x19\xf5\xd9\xa6\x82\xd1\x19Wn\xc1\xaf\xbe\xbfg)/\xa0\\G\xdc\xe5\x06\xf0\x13/]c\xc6?\xa3\xe0\xa1\xa1\xd0\xc4\xa5\x90\xc5\xa3@s\xef\xff\xfe\x12\x10\xdf\xaa\x8f\x95\xbcW\xd0Ah\x9f.\xa4,'
After decryption: 董付国 《Python程序设计》系列教材,清华大学出版社
温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!
欢迎转发给您的朋友,或许这正是Ta需要的知识!
Python使用AES算法进行加解密相关推荐
- 国密算法:利用python进行sm4算法的加解密,对称密钥
本篇利用python中的gmssl库进行sm4算法的加解密演示. 国密算法sm4特点: 密钥长度:16bytes(128bits) 分组长度和密钥长度均为128bits: 是对称加密算法:分为ecb模 ...
- aes加密算法python语言实现_如何用Python实现AES CCM的加解密
1.简介 AES CCM被广泛应用于现代通讯中,在学习过程中需要验证数据的加解密的结果,那么有个方便修改的Python脚本工具就是一个迫切的需求. 2. 实施 我们下面介绍如何实现AES CCM的Py ...
- python实现AES对文件加解密(这里使用ECB密码本模式)
文章目录 1.加密 2.解密 pip install pycryptodome 请注意加解密成功的前提条件 加解密密匙key值相同 加解密密匙长度相同 加解密补长度的逻辑相同 加解密的模式相同 1.加 ...
- java aes解密算法_使用java实现AES算法的加解密(亲测可用)
话不多说,直接上代码 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto ...
- aes 256 ecb 加解密 pkcs7补全 python JS
python aes 256 ecb 加解密 功能 实现 Python ECB 256 JS版本 ECB 算法 JS版本 CBC 算法Pkcs7填充 SQL AES 在线验证网站 notice 功能 ...
- python base64编码_JS和Python实现AES算法
1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...
- 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】
一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...
- 国密算法-SM4加解密工具类
import cn.hutool.crypto.symmetric.SymmetricCrypto;/*** @author : chenfan* @className : SM4Utils* @da ...
- Python基于AESSHA1PRNG 算法 加密与解密
因工作需要,需要对aes进行加解密,收集资料时从网上找到了核心写法代码,经小量修改满足了需求. 核心加.解密代码来自原文: https://blog.csdn.net/max229max/articl ...
最新文章
- 利用inotifywait监控主机文件和目录
- 【收藏】Linux 运维必备的 40 个命令总结
- 安卓seekbar 怎么判断正负_厦门湖里区佳丽花园马桶掉东西了疏通下水怎么收费...
- 都忘了自己还有一套房子了。。。
- Maven私服Nexus搭建
- 前端很慌!React 称霸,Vue 凶猛,TypeScript 威逼 JavaScript
- java 中鼠标事件_Java中的鼠标事件
- AndroidStudio有时候调试会一直卡在:starting LLDB server
- visio-制作甘特图工具
- 二级分销系统平台软件开发
- 分布式定时任务调度平台Elastic-Job技术详解
- 计算机毕业设计SSM电影院购票系统【附源码数据库】
- 怎么往日历里面加时钟java,怎样在博客里添加钟表和日历
- 权限管理系统(用户信息管理模块业务组件实现代码,带注解)
- c语言编写的点菜程序,基于C语言实现点菜系统
- PigGo配置Gitee仓库出现“Not Found Project“的错误解决方案
- 平安好房想灭房产中介靠不靠谱?
- 以下是WinWebMail破解步骤:
- Markdown输入数学公式
- 语音识别(2): kws项目实现、数据集代码分析
热门文章
- 计算机用户文件夹怎么改名称,win10修改用户名文件夹方法_win10怎么改用户文件夹名称-win7之家...
- php代理请求失败,http请求失败有哪些原因
- mysql设计学习_Mysql数据库设计学习
- 9277用计算机,【资料】[转]鸿合电子白板学科通用工具使用技巧
- c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量
- 光纤熔接盒盘线方法_唐品小课堂光纤色谱
- cdf日上免税店_cdf会员购吐槽大会!从上海日上开始!
- html 标签面板,HTML 标签大全及属性
- 基于JAVA+Swing+MYSQL的进销存管理系统
- cesium3dtiles位置改变