输出结果:
b'b248ebd299b31dd1'b'ITester'3、3DES加密3DES(或称为Triple DES)是三重数据加密算法(TDEA , Triple Data Encryption Algorithm)块密码的通称 , 是DES向AES过渡的加密算法 。
4、AES加密高级加密标准(Advanced Encryption Standard , 缩写:AES) , 在密码学中又称Rijndael加密法 。速度快 , 编码紧凑 。
from Cryptodome.Cipher import AESfrom Cryptodome import Randomfrom binascii importa2b_hexdata = https://www.isolves.com/it/cxkf/yy/Python/2021-12-21/'ITester软件测试小栈'#密钥必须为16(AES-128),24,32key = b'this is a 16 key'#生成长度等于AES块大小的不可重复的密钥向量iv =Random.new().read(AES.block_size)print(iv)#使用key和Iv初始化AES对象mycipher = AES.new(key,AES.MODE_CFB,iv)print(mycipher)cip = mycipher.encrypt(data.encode())#将iv加到加密的密钥开头ciptext =iv + cipprint(ciptext)#解密需要 key和iv 生成AES对象,取前16位是ivmydecrypt = AES.new(key,AES.MODE_CFB,ciptext[:16])#取后16位是密钥decrytext = mydecrypt.decrypt(ciptext[16:])print(decrytext.decode())输出结果:
b'"xcbHzxd1>x08pxddxbcxf3Cx87lxf3xe5'<Cryptodome.Cipher._mode_cfb.CfbMode object at 0x10df91eb0>b'"xcbHzxd1>x08pxddxbcxf3Cx87lxf3xe5x0exdcx8fx1bxc0xe5Uxc6xa5'x7f*xa0x8bxa3xebUxefxbcxd7jx05d4x05'ITester七、RSA加密1、简介RSA加密算法是一种非对称加密算法 , 使用openssl , keytools等工具生成一对公私钥对 , 使用被公钥加密的数据可以使用私钥来解密 。
示例:
import rsa# rsa加密def rsaEncrypt(str):# 生成公钥、私钥(pubkey, privkey) = rsa.newkeys(512)print("公钥: ", pubkey)print("私钥: ", privkey)# 明文编码格式content = str.encode('utf-8')# 公钥加密crypto = rsa.encrypt(content, pubkey)return (crypto, privkey)# rsa解密def rsaDecrypt(str, pk):# 私钥解密content = rsa.decrypt(str, pk)con = content.decode('utf-8')return con(a, b) = rsaEncrypt("ITester软件测试小栈")print('加密后密文:')print(a)content = rsaDecrypt(a, b)print('解密后明文:')print(content)输出结果:
公钥:PublicKey(6814529323241172850728335141247508717269277267494229901386594011231139785660903876597435728831384748788754841049799215688731419667333062231824933307206319, 65537)私钥:PrivateKey(6814529323241172850728335141247508717269277267494229901386594011231139785660903876597435728831384748788754841049799215688731419667333062231824933307206319, 65537, 6454447002622527176039652037136241453160399729960737093529936320752579012730277408644466653521211901816393814636252571192738395899494415991466200889769361, 4797673045355672432997022168818242182770881041225501784151212772936794554333725043, 1420382185034032902338315580117109933359732257353521366383139403561669333)加密后密文:b'kx81x06x95xbb7x1bx7fxd2xafx97x0f,xfexa5xf3`$>x07x98:x9axcbxbax13xf9xc1x1cx18x193|xe2?xa2sxc71x9axf1xeeVx0c%PBFxddxdbxf3xbfhOxd0xcdx06}Tx18xc5xa82x0b'解密后明文:ITester八、总结上面讲了多种加密方法 , 我们简单总结下:
- 数据加密方式大体分为3类:单向加密、对称加密和公钥加密(非对称加密) 。
- 这3类加密方式都各自包含不同的加密算法 , 如单向加密方式中包含MD5、SHA1、SHA256等 , 这些算法又称为“哈希算法”或“散列算法”或“数据摘要算法” 。
- Python内置的hashlib和hmac只提供了单向加密的各种算法实现 , 如果要做对称加密或者公钥加密操作需要安装第三方扩展模块 , 常用的是pycrypto模块 。另外 , hmac允许在使用哈希算法计算数据摘要时使用一个密钥 。
- 随机数操作可以通过三个模块来实现 , Python内置的random模块和secrets模块(Python 3.6中才可用) , 还可以通过pycrypto模块中的Crypto.Random子包中的模块来完成 。
- base64只适合编码小段数据 , 且不能用于数据加密(算法是公开的 , 且没有密钥 , 所有人都可以解码) 。
- pycrypto是一个加密算法库 , 几乎所有的加密算法都可以在它里面找到相应的实现模块 。
【Python实现各种加密,接口加解密不说难】
推荐阅读
- 在VUE中实现效果"换一换"功能
- 分手吧Excel 我有Python了
- PHP&Python获取当前网络外网ip地址
- 一文讲透 Python 协程
- Python绘制多维度专题地图
- 视频调整分辨率的python代码,一如既往地实用
- 一篇文章摸透CAD各种比例,新手直呼终于开窍了
- 太好玩了!6种Python实现「实时」显示进度条
- 简单介绍Python中异常处理用法
- 详解一个Python库,用于构建精美数据可视化web app
