Python实战小程序——密码加密小工具(Crypto库)
来源:互联网 发布:给老人买什么好 知乎 编辑:程序博客网 时间:2024/06/10 07:40
对于部分喜欢将自己密码存在邮箱、网盘等容易被盗的朋友,可以自己记住一个唯一的密钥,通过这个小程序和密钥产生一串加密密文再存储,减少密码被盗几率。提示:Crypto库,要求:a.输入自己的秘钥:123456,b.选择是: encrypt 或者decrypt, c. 输出:加密后的密文,或者解密后的明文)
高级加密标准(Advanced Encryption Standard,AES),是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级
加密标准已然成为对称密钥加密中最流行的算法之一。AES只是个基本算法,实现AES有若干模式。其中的CBC模式因为其安全性而被TLS(就是https的加密标准)和IPSec(win采用的)作为技术标准。简单地说,CBC使用密码和salt(起扰乱作用)按固定算法(md5)产生key和iv。然后用key和iv(初始向量,加密第一块明文)加密(明文)
和解密(密文)我们需要使用的就是Crypto模块中的AES模块:
样例代码:
>>> from Crypto.Cipher import AES #引入AES模块>>> obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')>>> message = "The answer is no">>> ciphertext = obj.encrypt(message)>>> ciphertext'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'>>> obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')>>> obj2.decrypt(ciphertext)'The answer is no'
AES.new(key,AES.MODE_CBC,iv)这个函数的用法:key指的是自己指定的加密的初始密钥,AES.MODE_CBC 指的是加密的模式是CBC,iv指的是初始向量,加密第一块明文)加密(明文)和解密(密文)。这里的obj对象就生成了我们自己设定的加密方式,在调用obj对象的encrypt(加密)和decrypt(解密)方法,即可实现加密解密。
from Crypto.Cipher import AESfrom binascii import b2a_hex,a2b_hexclass prpcrypt(): #定义一个类 def __init__(self,key): self.key=key self.mode=AES.MODE_CBC def encrypt(self,text): cryptor=AES.new(self.key,self.mode,self.key) x = len(text) % 16 if x != 0: text = text + '0' * (16 - x) #不满16,32,64位补0 self.ciphertext=cryptor.encrypt(text) return b2a_hex(self.ciphertext) def decrypt(self,text): cryptor=AES.new(self.key,self.mode,self.key) plain_text=cryptor.decrypt(a2b_hex(text)) return plain_text.rstrip('\0')pc=prpcrypt('tecentbluewhaleA') #自己设定的密钥e=pc.encrypt("123456")d=pc.decrypt(e)print e,de=pc.encrypt("gffvdfshf")d=pc.decrypt(e)print e,d
这之中能还需要学习一下python中类的定义和使用方法,注意初始密钥key必须是16位的。
- Python实战小程序——密码加密小工具(Crypto库)
- Python小程序——凯撒密码加密方式实现
- Python实战小程序——字符串
- python实现base64加密/解密界面化小工具
- GUI入门路(MISC小工具)——基于wxPython的一次小尝试
- Python——图片转字符小工具
- python小工具——下载更新代码工具
- Python小工具——通过API获取天气预报
- 【寻找最佳小程序】01期:影视评分小工具“豆瓣评分”——产品设计要点及专家评析
- 用crypto++实现简单加密解密MFC小程序
- Python 小工具集合
- [python] 用户名小工具
- python小工具
- Python 内置小工具
- python 小工具总结
- python小工具
- C#加密解密小工具
- 实用小工具:加密软件
- hdoj2112-HDU Today
- scikit learning——用k邻近算法进行分类实例
- centos彻底删除文件夹、文件命令(centos 新建、删除、移动、复制等命令)
- JavaScript快速上手之9:while循环
- VirtualBox安装Ubuntu时花屏问题解决
- Python实战小程序——密码加密小工具(Crypto库)
- Java内部类的小结
- 说说cglib动态代理
- Android锁屏、重启、关机开发!简单直接
- va_list 可变参数
- Linux下执行可执行文件提示:No such file or directory的解决方法
- LeeCode No.28 Implement strStr()
- 补11.8
- Starting From A Decision.