高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
本文主要通过pycryptodome库进行AES的简单加解密。

# -*- coding: utf-8 -*-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:encryption.py
#日期:2019-07-31
#备注:多种加解密方法    # pip install pycryptodome
用pyCryptodome模块带的aes先将秘钥以及要加密的文本填充为16位   AES key must be either 16, 24, or 32 bytes long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
import base64
from Crypto.Cipher import AES#  bytes不是32的倍数那就补足为32的倍数
def add_to_32(value):while len(value) % 32 != 0:value += b'\x00'return value     # 返回bytes# str转换为bytes超过32位时处理
def cut_value(org_str):org_bytes = str.encode(org_str)n = int(len(org_bytes) / 32)print('bytes长度:',len(org_bytes))i = 0new_bytes = b''while n >= 1:i = i + 1new_byte = org_bytes[(i-1)*32:32*i-1]new_bytes += new_byten = n - 1if len(org_bytes) % 32 == 0:                   # 如果是32的倍数,直接取值all_bytes = org_byteselif len(org_bytes) % 32 != 0 and n>1:         # 如果不是32的倍数,每次截取32位相加,最后再加剩下的并补齐32位all_bytes = new_bytes + add_to_32 (org_bytes[i*32:])else:all_bytes = add_to_32 (org_bytes)          # 如果不是32的倍数,并且小于32位直接补齐print(all_bytes)return all_bytesdef AES_encrypt(org_str,key):# 初始化加密器aes = AES.new(cut_value(key), AES.MODE_ECB)#先进行aes加密encrypt_aes = aes.encrypt(cut_value(org_str))# 用base64转成字符串形式encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 执行加密并转码返回bytesprint(encrypted_text)return(encrypted_text)def AES_decrypt(secret_str,key):# 初始化加密器aes = AES.new(cut_value(key), AES.MODE_ECB)# 优先逆向解密base64成bytesbase64_decrypted = base64.decodebytes(secret_str.encode(encoding='utf-8'))# 执行解密密并转码返回strdecrypted_text = str(aes.decrypt(base64_decrypted), encoding='utf-8').replace('\0', '')print(decrypted_text)if __name__ == '__main__':org_str = 'http://mp.weixin.qq.com/s?__biz=MjM5NjAxOTU4MA==&mid=3009217590&idx=1&sn=14532c49bc8cb0817544181a10e9309f&chksm=90460825a7318133e7905c02e708d5222abfea930e61b4216f15b7504e39734bcd41cfb0a26d&scene=27#wechat_redirect'# 秘钥key = '123abc'secret_str = AES_encrypt(org_str,key)AES_decrypt(secret_str,key)

【Python】pyCryptodome模块实现AES加密、解密相关推荐

  1. Python crypto模块实现RSA和AES加密解密

    Python crypto模块实现RSA和AES加密解密 Python的crypto是用于RSA加密解密,AES加密解密的. 一.RSA和AES简介 RSA加密算法是一种非对称加密算法.RSA 是19 ...

  2. python 加密解密_python实现AES加密解密

    本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原 ...

  3. aes加密算法python语言实现_C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]...

    原文:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php c#里面的AES加密 ...

  4. AES加密解密python实现

    1.前言 关于现代密码学算法,可以查看以下博客全面了解 CISSP考试要求里的"应用密码学"内容辅助记忆趣味串讲_晓翔仔的博客-CSDN博客 AES的细节知识,可以查阅 AES加密 ...

  5. C语言实现AES加密解密

    AES加密是美国联邦政府采用的一种块加密标准,如今已经被全世界广为使用.嵌入式开发中我们也经常会用到加密解密算法,如果没有硬件模块来实现,就需要用到C代码软件实现.下面介绍调用mbedTLS中的AES ...

  6. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  7. android、ios、php之间AES加密解密

    使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES. PHP 源码 <?php$aes = ...

  8. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  9. openssl与cryptoAPI交互AES加密解密

    原文: http://blog.csdn.net/zhouyuqwert/article/details/7422467 有读者指出代码贴两遍,修改下. 继上次只有CryptoAPI的加密后,这次要实 ...

最新文章

  1. 计算机c语言试题文档,c语言计算机考试试题
  2. 实用场景解析:那些漂亮的可视化图表都是如何做的?
  3. jira+mysql配置
  4. 自定义Redis序列化工具
  5. C#WebBrowser控件使用教程与技巧收集
  6. H3C交换机设置DHCP中继,配合Linux 服务器为多VLAN提供DHCP地址分配服务
  7. 设计模式3—行为型模式
  8. git-bug分支-git-stash-工作代码与bug解决同时处理时解决模拟
  9. go 框架iris 响应记录器
  10. SAP License:谈对财务人的解惑
  11. leetcode组队学习——查找(一)
  12. 神经网络入门--学习资源
  13. SQL Server性能优化(13)看懂查询计划
  14. 网络TCP/IP基础(IP地址网络汇总与规划)
  15. 计算机无法复制大文件格式,U盘复制文件电脑提示文件过大无法复制怎么解决?...
  16. git clone之报错git@gitee.com: Permission denied (publickey).fatal: Could not read from remote repositor
  17. python爬虫工程师面试自我介绍范文_计算机工程师面试自我介绍范文五篇
  18. 机器学习——EM算法
  19. 日志模块、正则表达式、时间模块
  20. Vista HTTPS 证书错误

热门文章

  1. Spring bean 不被 GC 的真正原因
  2. JVM 学习一:JVM 的构架模型及生命周期
  3. java注解执行顺序_如何确保java中的注释执行顺序?
  4. updatepanel失效怎么办_【点滴积累】解决jQuery绑定事件在updatepanel更新后失效的方法...
  5. php 用户授权访问控制,用户权限访问控制功能
  6. 云南计算机专修学校附中,昆明高中哪家强? 师附中和昆一中高考尖子生最多...
  7. php theexcerpt,wordpress的excerpt()函数的用法示例
  8. java 扫描类_Java扫描指定包中所有类
  9. python曲面图颜色渐变方向_matplotlib三维曲面的透明度和颜色渐变?
  10. python 电脑显示桌面_使用Python快速实现显示器关闭和锁住桌面