一文读懂,python实现常用的数据编码和对称加密
创始人
2024-01-22 18:42:33

相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式,如何使用 python 去实现。话不多说,接下来直接进入主题:

1、base64 编码

什么是 Base64 编码?

Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法
在 python 中对数据进行 base64 编码可以使用 base64 这个官方库

案例:

import base64data= "musen"# base编码
data = data.encode()
res = base64.b64encode(data)
print(res)# base64解码
res2 = base64.b64decode(res)
print(res2)

2、常见的哈希算法:

hash算法有很多:比如MD4、MD5、SHA-1 , SHA-224, SHA-256, SHA-384 和 SHA-5等等。其中MD5是比较常见的一种,也称之为MD5加密。

什么是 MD5 加密?

MD5(Message Digest Algorithm 5),是一种哈希算法,是不可逆的,即通过 md5 加密之后没办法得到原文,没有解密算法

python 中有一个叫做 hashlib 的官方库,对于一些常见的哈希算法这个库都实现了,咱们在工作中如果要使用 MD5 加密,直接使用 hashlib 这个库就可以实现。

案例

from hashlib import md5def encrypt_md5(data):"""md5加密"""# 创建md5对象new_md5 = md5()new_md5.update(data.encode('utf-8'))res = new_md5.hexdigest()# 加密return res

3、DES 加密

什么是对称加密?

对称加密指的的加密和解密用同一个秘钥进行加解密的加密方式。

图片

什么是 EDS 加密?

des 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时 , 必须共同持相同的密码。

在 python 中有一个叫做 pyDes 的第三方库可以用来实现 DES 加密,使用之前需要先通过 pip 命令安装:pip install pyDes

案例:

from pyDes import des, CBC, PAD_PKCS5
import binasciidef des_encrypt(s, KEY):secret_key = KEYiv = secret_keyk = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)en = k.encrypt(s, padmode=PAD_PKCS5)return binascii.b2a_hex(en).decode()def des_descrypt(s, KEY):secret_key = KEYiv = secret_keyk = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)return de.decode()if __name__ == '__main__':# 秘钥KEY = 'mHAxsLtt'# 加密res = des_encrypt("python666", KEY)print(res)# 解密res2 = des_descrypt(res, KEY)print(res2)

4、3DES 加密

什么是 3DES 加密?

3DES(或称为 Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法

python 中实现 3DES 加密可以使用,pyDes 这个模块去实现

案例:

import base64
import hashlibimport pyDesdef encrypt_3des(data):key = "U8NjHq1ZP10="hash_md5 = hashlib.md5()hash_md5.update(key.encode(encoding='UTF-8'))key = hash_md5.hexdigest()iv = key[0:8]key2 = key[0:24]k = pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)d = k.encrypt(data.encode())d = base64.b64encode(d)return d.decode()def descrypt_3des(data):key = "U8NjHq1ZP10="hash_md5 = hashlib.md5()hash_md5.update(key.encode(encoding='UTF-8'))key = hash_md5.hexdigest()iv = key[0:8]key2 = key[0:24]k = pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)data = base64.b64decode(data)d = k.decrypt(data)return d.decode()if __name__ == '__main__':res = encrypt_3des('lemonban')print(res)res2 = descrypt_3des(res)print(res2)

5、AES 加密

什么是 AES 加密?

AES 也是一种对称加密。它是用来替代之前的 DES 的,安全性更高。目前已经被多方分析且广为全世界所使用,并在 2002 年 5 月 26 日成为有效的标准 ,

关于 python 中实现 Aes 加密的库很多,大家可以去 pypi 上自行下载安装,下面案例用的是 Crypto 这个库

案例

import base64
from Crypto.Cipher import AESclass AesEncrypt:# 密钥key = '0CoJUm6Qyw8W8jud'# 偏移量vi = '0102030405060708'def encrypt(self, data):"""加密"""data = data.encode('utf8')data = (lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16).encode('utf-8'))(data)cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))encryptedbytes = cipher.encrypt(data)encodestrs = base64.b64encode(encryptedbytes)enctext = encodestrs.decode('utf8')return enctextdef decrypt(self, data):"""解密"""data = data.encode('utf8')encodebytes = base64.decodebytes(data)cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))text_decrypted = cipher.decrypt(encodebytes)unpad = lambda s: s[0:-s[-1]]text_decrypted = unpad(text_decrypted)text_decrypted = text_decrypted.decode('utf8')return text_decryptedif __name__ == '__main__':# 注意点:加密数据中有中文的时候,会有问题data = "musen123"aes = AesEncrypt()# 加密enctext = aes.encrypt(data)print(enctext)# # 解密text_decrypted = aes.decrypt(enctext)print(text_decrypted)

资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
最古之史实为方志 左传三不朽 学习时报人生的价值究竟是什么?用什么来衡量人生价值?这是一个曾被无数人问过且继续为无数人追问的话题,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
开山种田打一字谜 开山创始人打... 贵阳市花果园半山小镇兰花坡森林公园——居民开山种地 公园变成菜园山林菜地从山脚一直延伸至山顶,面积近...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...