本文要点在于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算法进行加解密相关推荐

  1. 国密算法:利用python进行sm4算法的加解密,对称密钥

    本篇利用python中的gmssl库进行sm4算法的加解密演示. 国密算法sm4特点: 密钥长度:16bytes(128bits) 分组长度和密钥长度均为128bits: 是对称加密算法:分为ecb模 ...

  2. aes加密算法python语言实现_如何用Python实现AES CCM的加解密

    1.简介 AES CCM被广泛应用于现代通讯中,在学习过程中需要验证数据的加解密的结果,那么有个方便修改的Python脚本工具就是一个迫切的需求. 2. 实施 我们下面介绍如何实现AES CCM的Py ...

  3. python实现AES对文件加解密(这里使用ECB密码本模式)

    文章目录 1.加密 2.解密 pip install pycryptodome 请注意加解密成功的前提条件 加解密密匙key值相同 加解密密匙长度相同 加解密补长度的逻辑相同 加解密的模式相同 1.加 ...

  4. java aes解密算法_使用java实现AES算法的加解密(亲测可用)

    话不多说,直接上代码 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto ...

  5. aes 256 ecb 加解密 pkcs7补全 python JS

    python aes 256 ecb 加解密 功能 实现 Python ECB 256 JS版本 ECB 算法 JS版本 CBC 算法Pkcs7填充 SQL AES 在线验证网站 notice 功能 ...

  6. python base64编码_JS和Python实现AES算法

    1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...

  7. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  8. 国密算法-SM4加解密工具类

    import cn.hutool.crypto.symmetric.SymmetricCrypto;/*** @author : chenfan* @className : SM4Utils* @da ...

  9. Python基于AESSHA1PRNG 算法 加密与解密

    因工作需要,需要对aes进行加解密,收集资料时从网上找到了核心写法代码,经小量修改满足了需求. 核心加.解密代码来自原文: https://blog.csdn.net/max229max/articl ...

最新文章

  1. 利用inotifywait监控主机文件和目录
  2. 【收藏】Linux 运维必备的 40 个命令总结
  3. 安卓seekbar 怎么判断正负_厦门湖里区佳丽花园马桶掉东西了疏通下水怎么收费...
  4. 都忘了自己还有一套房子了。。。
  5. Maven私服Nexus搭建
  6. 前端很慌!React 称霸,Vue 凶猛,TypeScript 威逼 JavaScript
  7. java 中鼠标事件_Java中的鼠标事件
  8. AndroidStudio有时候调试会一直卡在:starting LLDB server
  9. visio-制作甘特图工具
  10. 二级分销系统平台软件开发
  11. 分布式定时任务调度平台Elastic-Job技术详解
  12. 计算机毕业设计SSM电影院购票系统【附源码数据库】
  13. 怎么往日历里面加时钟java,怎样在博客里添加钟表和日历
  14. 权限管理系统(用户信息管理模块业务组件实现代码,带注解)
  15. c语言编写的点菜程序,基于C语言实现点菜系统
  16. PigGo配置Gitee仓库出现“Not Found Project“的错误解决方案
  17. 平安好房想灭房产中介靠不靠谱?
  18. 以下是WinWebMail破解步骤:
  19. Markdown输入数学公式
  20. 语音识别(2): kws项目实现、数据集代码分析

热门文章

  1. 计算机用户文件夹怎么改名称,win10修改用户名文件夹方法_win10怎么改用户文件夹名称-win7之家...
  2. php代理请求失败,http请求失败有哪些原因
  3. mysql设计学习_Mysql数据库设计学习
  4. 9277用计算机,【资料】[转]鸿合电子白板学科通用工具使用技巧
  5. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量
  6. 光纤熔接盒盘线方法_唐品小课堂光纤色谱
  7. cdf日上免税店_cdf会员购吐槽大会!从上海日上开始!
  8. html 标签面板,HTML 标签大全及属性
  9. 基于JAVA+Swing+MYSQL的进销存管理系统
  10. cesium3dtiles位置改变