本文实例讲述了python实现的AES双向对称加密解密与用法。分享给大家供大家参考,具体如下:

AES只是个基本算法,实现AES有若干模式。其中的CBC模式因为其安全性而被TLS(就是https的加密标准)和IPSec(win采用的)作为技术标准。简单地说,CBC使用密码和salt(起扰乱作用)按固定算法(md5)产生key和iv。然后用key和iv(初始向量,加密第一块明文)加密(明文)和解密(密文)。
下面介绍python实现的AES加密解密实例,这里采用CBC模式,用到了pycrypto模块
安装:
pip install Crypto pip install binascii
实现:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@author: rui.xu
#这里使用pycrypto库
#按照方法:easy_install pycrypto
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class prpcrypt():
def __init__(self,key):
self.key = key
self.mode = AES.MODE_CBC
#加密函数,如果text不足16位就用空格补足为16位,
#如果大于16当时不是16的倍数,那就补足为16的倍数。
def encrypt(self,text):
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
#这里密钥key 长度必须为16(AES-128),
#24(AES-192),或者32 (AES-256)Bytes 长度
#目前AES-128 足够目前使用
length = 16
count = len(text)
if count < length:
add = (length-count)
#\0 backspace
text = text + ('\0' * add)
elif count > length:
add = (length-(count % length))
text = text + ('\0' * add)
self.ciphertext = cryptor.encrypt(text)
#因为AES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题
#所以这里统一把加密后的字符串转化为16进制字符串
return b2a_hex(self.ciphertext)
#解密后,去掉补足的空格用strip() 去掉
def decrypt(self,text):
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip('\0')
if __name__ == '__main__':
pc = prpcrypt('keyskeyskeyskeys') #初始化密钥
import sys
e = pc.encrypt(sys.argv[1]) #加密
d = pc.decrypt(e) #解密
print "加密:",e
print "解密:",d
ValueError: IV must be 16 bytes long windows下默认会报这个错,
cryptor = AES.new(self.key,self.mode,b'0000000000000000')
实例化后面加上后面那个就Ok了
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
MD5在线加密工具:
http://tools./password/CreateMD5Password
迅雷、快车、旋风URL加密/解密工具:
http://tools./password/urlrethunder
在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools./password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools./password/sha_encode
希望本文所述对大家Python程序设计有所帮助。
# python
# AES
# 双向对称
# 加密解密
# 加密工具
# 会报
# 是个
# 地说
# 还可以
# 那就
# 感兴趣
# 给大家
# 为其
# 就用
# 转化为
# 所述
# 程序设计
# 存在问题
# 讲述了
# coding
# env
# bin
# utf
相关文章:
如何获取PHP WAP自助建站系统源码?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
网站按钮制作软件,如何实现网页中按钮的自动点击?
,南京靠谱的征婚网站?
建站之星安装模板失败:服务器环境不兼容?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
建站之星3.0如何解决常见操作问题?
已有域名和空间如何快速搭建网站?
Android自定义listview布局实现上拉加载下拉刷新功能
建站之星后台密码遗忘?如何快速找回?
如何快速搭建高效服务器建站系统?
大连 网站制作,大连天途有线官网?
网站制作网站,深圳做网站哪家比较好?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何确保西部建站助手FTP传输的安全性?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何通过云梦建站系统实现SEO快速优化?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
建站之星如何快速解决建站难题?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何选择PHP开源工具快速搭建网站?
如何在自有机房高效搭建专业网站?
如何在腾讯云服务器上快速搭建个人网站?
如何快速配置高效服务器建站软件?
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
自助网站制作软件,个人如何自助建网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
黑客入侵网站服务器的常见手法有哪些?
Swift中switch语句区间和元组模式匹配
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
教学网站制作软件,学习*后期制作的网站有哪些?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
宝塔新建站点报错如何解决?
如何基于PHP生成高效IDC网络公司建站源码?
香港服务器租用费用高吗?如何避免常见误区?
建站之星代理如何获取技术支持?
如何注册花生壳免费域名并搭建个人网站?
如何快速查询域名建站关键信息?
兔展官网 在线制作,怎样制作微信请帖?
建站之家VIP精选网站模板与SEO优化教程整合指南
如何用低价快速搭建高质量网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
利用JavaScript实现拖拽改变元素大小
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何选择高效可靠的多用户建站源码资源?
*请认真填写需求信息,我们会在24小时内与您取得联系。