Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python使用AES算法进行加解密

Python使用AES算法进行加解密

作者头像
Python小屋屋主
发布于 2018-04-16 06:43:12
发布于 2018-04-16 06:43:12
1.8K0
举报
文章被收录于专栏:Python小屋Python小屋

本文要点在于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程序设计》系列教材,清华大学出版社

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AES 加解密 python手动实现 - wuuconix's blog
很久之前就用python实现了des的加解密,了解了代替和置用python代码实现的过程。但是在试图实现AES的时候遇到了多项式乘法的困难,一直搁置到昨天。
wuuconix
2023/01/30
1.4K0
AES 加解密 python手动实现 - wuuconix's blog
纯C语言AES-128(可修改)-ECB模式加密-zero模式
此代码是从Github找到的,因为要使用加密. 不是原创. 加了点自己的代码. 比如原版只能是加密16个字节缓冲. 而实战环境中肯定是一个buffer. 所以我对buffer做了拆分. 直接传递key就可以了. 解密代码并没有动,有兴趣的字节改一改解密代码. 直接使用的工具对比的.加密缓冲之后的结果与工具一致. 所以我认为没问题了.
IBinary
2021/09/22
2.8K1
纯C语言AES-128(可修改)-ECB模式加密-zero模式
AES加解密原理详解与算法实现
​要编写AES算法,首先了解AES算法原理,AES算法是一个对称分组密码算法。数据分组长度必须是 128 bits,使用的密钥长度为 128,192 或 256 bits。对于三种不同密钥长度的 AES 算法,分别称为“AES-128”、“AES-192”、“AES-256”。AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混(MixColumns)和轮密钥加(AddRoundKey)。
timerring
2022/07/20
3.7K0
AES加解密原理详解与算法实现
python进行AES加密
AES是一种对称加密算法。它涉及四个计算步骤,分别是替换字节、行移位、列混排和轮密钥加密。整个加密过程中会不断迭代重复上述四个步骤。解密过程就是上述加密步骤的逆运算。
灯珑LoGin
2022/10/31
2K0
《Python程序设计基础(第2版)》被评为山东省高等教育优秀教材
1、《Python程序设计基础(第2版)》(ISBN:9787302490562,董付国,清华大学出版社,2018年1月出版,2020年12月第18次印刷),连续两年(2019、2020)被评为清华大学出版社畅销教材,2020年被评为山东省高等教育优秀教材。
Python小屋屋主
2021/01/27
8450
《Python程序设计基础(第2版)》被评为山东省高等教育优秀教材
国密SM4分组加密[通俗易懂]
SMS4是我国无线局域网标准WAPI中所采用的分组密码标准,随后被我国商用密码标准采用,又名SM4(SM是“商密”的缩写,目前公布的其他商密标准包括SM2椭圆曲线公钥密码,SM3密码杂凑算法)。作为我国商用密码的分组密码标准,预计SMS4在国内的敏感但非机密的应用领域会逐渐取代3DES,AES等国外分组密码标准,用于通信加密,数据加密等应用场合。 SM4的密钥长度和分组长度均为128比特,其设计安全性等同于AES-128。
全栈程序员站长
2022/11/10
1.6K0
Python实现各种加密,接口加解密不再难
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种加密,接口加解密再也不愁。
可可的测试小栈
2021/12/17
7K0
Python实现各种加密,接口加解密不再难
Python+matplotlib绘图使用Latex引擎渲染坐标轴刻度文本上标
封面图片:《Python程序设计基础与应用》(ISBN:9787111606178),董付国,机械工业出版社
Python小屋屋主
2020/03/03
2K0
Python+matplotlib绘图使用Latex引擎渲染坐标轴刻度文本上标
AES算法的使用及逆向中的识别技巧
本文属于OneTS安全团队成员flatcc的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
OneTS安全团队
2025/02/07
1770
AES算法的使用及逆向中的识别技巧
基于Python的电子教室软件中远程关机功能的原理与实现
为更好地保证教学质量和提高学生的学习积极性,我使用Python开发了一套课堂教学管理系统,具有在线点名、在线答疑、随机提问、在线作业管理、在线自测、在线考试、数据汇总、试卷生成、屏幕广播等功能,前几天
Python小屋屋主
2018/04/16
1.6K0
基于Python的电子教室软件中远程关机功能的原理与实现
字符串的这个东西-翻译表
不知道大家是否见过这个东西,反正我清楚记得我是见过的,可是为什么会写这个东西?有以下一个场景: 怎样将一个字符串中的中文字符统一转换成英文字符? 不知道大家会怎样去做?先列举一个例子: 'hello
py3study
2020/01/02
1.1K0
各种转码(bytes、string、base64、numpy array、io、BufferedReader )
https://www.cnblogs.com/zhuminghui/p/11359858.html
全栈程序员站长
2022/09/14
7.1K0
AES加密算法的详细介绍与实现
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
全栈程序员站长
2022/09/13
7.6K0
Python+NumPy+Pillow+Moviepy根据图片制作水平翻页的视频
董付国著,《Python程序设计基础(第3版)》(微课版),ISBN:9787302611035,清华大学出版社,定价59.8元,2022年12月出版,2023年1月第2次印刷(本书前两版累计印刷27次,已退出历史舞台),全国高等学校计算机教育研究会“十四五”规划教材,山东省高等教育优秀教材,山东省普通高等教育一流教材,山东省一流本科课程“Python应用开发”(线上线下混合)配套教材,山东省一流本科课程“Python程序设计基础”(线上)配套教材,本书第二版为清华大学出版社2019、2020、2021、2022年畅销教材
Python小屋屋主
2023/08/29
3250
Python+NumPy+Pillow+Moviepy根据图片制作水平翻页的视频
免杀必会- 规避杀软的库
在编写恶意软件时,我们时常会用到系统的一些库,库的使用是非常简单,好用的,只需要导入头文件,那么就可以使用相应的api或函数,但是如果用于免杀或者c2,但是在EDR和终端软件横行的现在,不太“好”,下面将是我们在做免杀时或自己开发c2时常用的一些库,有现成调用代码,复制粘贴即可使用。
Gamma实验室
2022/12/01
1.4K0
Python+matplotlib绘制等电位面图
封面图片:《Python程序设计基础与应用》,董付国著,机械工业出版社,2018.9
Python小屋屋主
2019/05/14
1.2K0
Python+matplotlib绘制等电位面图
Python实现局域网内屏幕广播的技术要点分析
为更好地保证教学质量和提高学生的学习积极性,我使用Python开发了一套课堂教学管理系统,具有在线点名、在线答疑、随机提问、在线作业管理、在线自测、在线考试、数据汇总、试卷生成、屏幕广播等功能,教师端
Python小屋屋主
2018/04/16
1.5K0
Python实现局域网内屏幕广播的技术要点分析
Python+django网页设计入门(13):表单、修改密码
1、创建模板文件apps\questions\templates\modifyPwd.html。
Python小屋屋主
2018/12/17
8240
【C++】基础:加密算法介绍与部分实现
加密就是通过密码算法对数据进行转化,使之成为没有正确密钥任何人都无法读懂的报文。而这些以无法读懂的形式出现的数据一般被称为密文。为了读懂报文,密文必须重新转变为它的最初形式——明文,而含有以数学方式转换报文的双重密码就是密钥。
DevFrank
2024/07/24
9710
【C++】基础:加密算法介绍与部分实现
python3下常用编解码与加解密
Python3相对于Python2的一大改变就是,对默认字符类型进行了修改。Python2中定义字符串默认为二进制字符串,强制加前缀u的才是unicode字符串;而Python3中字符串默认为unicode,强制加前缀b的才是二进制字符串。(也就是刚好反过来了)
上帝De助手
2019/09/18
1.5K0
相关推荐
AES 加解密 python手动实现 - wuuconix's blog
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档