2、用途
- 加密注册用户的密码 。
- 网站用户上传图片 / 文件后 , 将MD5值作为文件名 。(MD5可以保证唯一性)
- key-value数据库中使用MD5值作为key 。
- 比较两个文件是否相同 。(在下载资源的时候 , 发现网站提供了MD5值 , 就是用来检测文件是否被篡改)
由于MD5模块在python3中被移除 , 在python3中使用hashlib模块进行md5操作 。
(1) 简单示例
文章插图
输出结果:
加密前为 :ITester软件测试小栈加密后为:45dc3931b34133a1ebd17e376884b35b
(2) 登录接口加密md5进行用户登录网站进行密码加密的示例:import socket, struct, jsonip_port = ("127.0.0.1", 8000)back_log = 5buffer_size = 1024tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_client.connect(ip_port)while True:cmd = input(">>>:")if not cmd: continue# 发送数据tcp_client.send(cmd.encode("gbk"))# 第一步:先收报头header = tcp_client.recv(4)# 第二步:从报头中解析(header数据的长度)header_size = struct.unpack("i", header)print('收到报头长度=', header_size)# 第三步:收到报头解析出对真实数据的描述信息header_json = tcp_client.recv(header_size)data = https://www.isolves.com/it/cxkf/yy/Python/2021-12-21/json.loads(header_json)print('收到报头内容=', data)total_size = data['total_size']# 第三步:接收真实的数据recv_size = 0recv_data = b""while recv_size < total_size:data = tcp_client.recv(buffer_size)recv_data += datarecv_size = len(recv_data)print('接收数据 =', recv_data.decode('gbk', 'ignore'))# 如果设置为ignore , 则会忽略非法字符;tcp_client.close()# 关闭
四、sha1加密1、简介SHA1的全称是Secure Hash Algorithm( 安全哈希算法 )。SHA1基于MD5 , 加密后的数据长度更长 , 它对长度小于264的输入 , 产生长度为160bit的散列值 。比MD5多32位,因此 , 比MD5更加安全 , 但SHA1的运算速度就比MD5要慢 。2、 Python中Sha1的使用
示例如下:
文章插图
输出结果:
加密前为 :ITester软件测试小栈加密后为:e933b46df326c0bb27cf075faf1d05eb92185f13
五、secrets加密1、简介secrets模块是Python 3.6新增的内置模块 , 它可以生成用于管理密码、账户验证信息、安全令牌和相关秘密信息等数据的密码强随机数 。总体来讲 , 我们可以通过secrets模块完成两种操作:- 生成安全随机数;
- 生成一个笃定长度的随机字符串 , 可用作令牌和安全URL;
(1) 生成随机密码生成一个由数字和字母组成的随机8位密码:
文章插图
输出结果:
I4S8Nn81
(2) 生成包含安全令牌的URL生成一个用于找回密码应用场景的 , 包含一个安全令牌的的临时URL 。文章插图
输出结果:
https://ITester.com/reset=-b81gTnkWHaOyIKqv_EISLD1eHfYz8X5ptgYfhMBnbk
六、Python加密库PyCryptodome1、简介PyCrypto是 Python 中密码学方面最有名的第三方软件包 , 2012年已停止 。幸运的是 , 该项目的分支PyCrytodome 取代了 PyCrypto 。2、DES加密(1) 简介DES算法为密码体制中的对称密码体制 , 又被称为美国数据加密标准 。DES是一个分组加密算法 , 典型的DES以64位为分组对数据加密 , 加密和解密用的是同一个算法 。
(2) 使用安装和导入:
安装:pip install pyDes导入:from pyDes import des, CBC, PAD_PKCS5
示例:from pyDes import des, CBC, PAD_PKCS5import binascii# 秘钥KEY = 'keiHG$93'def des_encrypt(s):"""DES 加密:param s: 原始字符串:return: 加密后字符串 , 16进制"""secret_key = KEY# 密码iv = secret_key# 偏移# secret_key:加密密钥 , CBC:加密模式 , iv:偏移, padmode:填充des_obj = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)# 返回为字节secret_bytes = des_obj.encrypt(s, padmode=PAD_PKCS5)# 返回为16进制return binascii.b2a_hex(secret_bytes)def des_descrypt(s):"""DES 解密:param s: 加密后的字符串 , 16进制:return:解密后的字符串"""secret_key = KEYiv = secret_keydes_obj = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)decrypt_str = des_obj.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)return decrypt_strprint(des_encrypt("ITester"))print(des_descrypt("b248ebd299b31dd1"))
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 在VUE中实现效果"换一换"功能
- 分手吧Excel 我有Python了
- PHP&Python获取当前网络外网ip地址
- 一文讲透 Python 协程
- Python绘制多维度专题地图
- 视频调整分辨率的python代码,一如既往地实用
- 一篇文章摸透CAD各种比例,新手直呼终于开窍了
- 太好玩了!6种Python实现「实时」显示进度条
- 简单介绍Python中异常处理用法
- 详解一个Python库,用于构建精美数据可视化web app