Python中socketserver及hashlib校验

本文介绍了Python中的socketserver模块如何实现服务器端TCP并发,并通过实例展示了基本用法和循环并发处理。同时,文章详细讲解了hashlib模块的使用,包括基本加密、加盐、动态加盐以及HMAC加密,强调了这些加密方法在需要校验功能时的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、socketserver

网络协议的最底层就是socket,基于socket模块,又封装了一层,就是socketserver,socketserver是为了实现server端tcp协议的并发

1、基本写法

server端写法:

# 服务端
#导入socket模块
import socketserver
#建立一个类,继承BaseRequestHandler类
class MyServer(socketserver.BaseRequestHandler):
	def handle(self):
		print("成功调用handle方法")
#ThreadingTCPServer(IP端口号,自定义的类)
server = socketserver.ThreadingTCPServer(("127.0.0.1",9003),MyServer)
server.serve_forever()

客户端:

import socket
sk=socket.socket()
sk.connect(("127.0.0.1",9003))
#收发数据的逻辑

sk.close()

运行结果:
运行结果

重复执行client端,可持续自动执行handle方法

2、通过socketserver实现循环并发

服务端:

# 服务端
import socketserver
class MyServer(socketserver.BaseRequestHandler):
	def handle(self):
		conn=self.request
		while True:
			# 接收数据
			res=conn.recv(1024)
			res1=res.decode()
			print(res1)
			conn.send(res1.upper().encode())
server=socketserver.ThreadingTCPServer(("127.0.0.1",9004),MyServer)
server.serve_forever()

客户端:

#客户端
import socket
sk=socket.socket()
sk.connect(("127.0.0.1",9004))
while True:
	strvar="you can you up"
	sk.send(strvar.encode())
	res=sk.recv(1024)
	print(res.decode())
sk.close()

运行结果:
服务端:
运行结果

客户端:
运行结果

二、haslib

hashlib这个模块是一堆加密算法的集合,哈希算法的加密方式不止一种,常用md5加密和hmac加密
https://www.cmd5.com/ md5解密网站,复杂密码无法解密
应用场景:在需要校验功能时使用

1、基本用法

#导入hashlib模块
import hashlib
#用md5加密,并生成对象
hm=hashlib.md5()
#将要加密的字符串转为字节流传入hashlib进行处理
hm.update("123456".encode("utf-8"))
#获取32位16进制字符串
res=hm.hexdigest()
#打印加密后字符串
print(res)

运行结果:
运行结果

通过解密网站我们查看加密后字符串对应的字符
运行结果

2、加盐

加一个关键字配合原字符串进行加密,使密码更复杂,不容易被破解

import hashlib
hm=hashlib.md5("Xman".encode("utf-8"))
hm.update("123456".encode("utf-8"))
res=hm.hexdigest()
print(res)

运行结果:
运行结果

通过解密网站查看加密后字符串对应的字符
查询结果

由于密码复杂度高,出现了购买提示

3、动态加盐

通过随机数字给密码加盐,这次密码我们设置复杂一些

import hashlib
import random
res1=random.randrange(100000,1000000)
hm=hashlib.md5(str(res1).encode("utf-8"))
hm.update("8217wlsd".encode("utf-8"))
res2=hm.hexdigest()
print(res2)

运行结果:
运行结果

通过解密网站查看加密后字符串对应的字符
查询结果

由于密码更为复杂,网页已无法进行破解

4、hmac加密

动态加盐

# 导入hmac模块
import hmac
import os
#随机生成指定位数字节流
key=os.urandom(32)
msg=b"123456"
#hmac(盐,密码)
hn=hmac.new(key,msg)
res=hn.hexdigest()
print(res)

运行结果:
运行结果

通过解密网站查看加密后字符串对应的字符

查询结果

网页无法进行反解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值