Python基于pycrypto实现的AES加密和解密算法示例

 更新时间:2018年04月10日 11:24:22   作者:chengqiuming  
这篇文章主要介绍了Python基于pycrypto实现的AES加密和解密算法,结合实例形式分析了Python使用pycrypto模块进行AES加密与解密操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了Python基于pycrypto实现的AES加密和解密算法。分享给大家供大家参考,具体如下:

一 代码

# -*- coding: UTF-8 -*-
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 = 'Python3.5 is excellent.'
  key = keyGenerater(16)
  #随机选择AES的模式
  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])

二 运行结果

E:\python\python可以这样学\第18章 密码学编程\code>python AES_test.py
('key:', 'D5pcO6iu0HIbj3I2')
('mode:', 1)
('Before encryption:', 'Python3.5 is excellent.')
('After encryption:', '\xf4\x15\x9f\xaf\xea\xd0\n\x03\xfdf\xf6}9\xaa\xa34\xb4\x1eL2\x0e \x16\xa5 \xff?\x8bA\x8e\xdd\xa8')
('After decryption:', u'Python3.5 is excellent.')

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 时间序列预测中的数据滑窗操作实例(python实现)

    时间序列预测中的数据滑窗操作实例(python实现)

    滑动窗口操作非常普遍,非常有用,它们也很容易在Python中实现,下面这篇文章主要给大家介绍了关于时间序列预测中的数据滑窗操作python实现的相关资料,需要的朋友可以参考下
    2022-03-03
  • Python 可视化调色盘绘制

    Python 可视化调色盘绘制

    这篇文章主要介绍了Python 可视化调色盘绘制,文章首先通过导入模块并加载图片展开全文介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-06-06
  • Python抓取手机号归属地信息示例代码

    Python抓取手机号归属地信息示例代码

    之前看到一篇文章有提供手机号归属地数据库的下载,由于手机号号段一直在增加,所以提供的数据基本上随时会过期,更理想的方法是从网上定期抓取其他站点维护的经纬度信息。下面这篇文章就给大家介绍了如何利用Python抓取手机归属地信息,有需要的朋友们可以参考借鉴。
    2016-11-11
  • 一文教你用Pyecharts做交互图表

    一文教你用Pyecharts做交互图表

    Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,本文介绍了Pyecharts交互图表,感兴趣的可以了解一下
    2021-05-05
  • python + winrm 实现远程连接Windows服务器并执行指定命令的操作过程

    python + winrm 实现远程连接Windows服务器并执行指定命令的操作过程

    Windows远程管理(WinRM)是Windows Server 2003 R2,Windows Vista和Windows Server 2008中一种新式的方便远程管理的服务,这篇文章主要介绍了python + winrm 实现远程连接Windows服务器并执行指定命令的操作过程,需要的朋友可以参考下
    2023-10-10
  • 对PyQt5中树结构的实现方法详解

    对PyQt5中树结构的实现方法详解

    今天小编就为大家分享一篇对PyQt5中树结构的实现方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 详解Python中的测试工具

    详解Python中的测试工具

    本文介绍了两个Python中的测试工具: doctest和unittest,并配以简单的例子来说明这两个测试模块的使用方法,需要的朋友可以参考下
    2019-06-06
  • 基于Python的微信机器人开发 微信登录和获取好友列表实现解析

    基于Python的微信机器人开发 微信登录和获取好友列表实现解析

    这篇文章主要介绍了Python微信机器人开发 微信登录和获取好友列表实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python微信好友数据分析详解

    python微信好友数据分析详解

    这篇文章主要为大家详细介绍了python微信好友数据分析,实现对微信好友的获取,并对省份、性别等数据分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python中如何用Matplotlib绘制多图并合并展示

    Python中如何用Matplotlib绘制多图并合并展示

    这篇文章主要介绍了Python中如何用Matplotlib绘制多图并合并展示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论