Python中socketserver及hashlib校验

socketserver及hashlib校验

  • 一、socketserver
    • 1、基本写法
    • 2、通过socketserver实现循环并发
  • 二、haslib
    • 1、基本用法
    • 2、加盐
    • 3、动态加盐
    • 4、hmac加密

一、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()

运行结果:
Python中socketserver及hashlib校验_第1张图片

重复执行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()

运行结果:
服务端:
Python中socketserver及hashlib校验_第2张图片

客户端:
Python中socketserver及hashlib校验_第3张图片

二、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)

运行结果:
Python中socketserver及hashlib校验_第4张图片

通过解密网站我们查看加密后字符串对应的字符
Python中socketserver及hashlib校验_第5张图片

2、加盐

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

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

运行结果:
Python中socketserver及hashlib校验_第6张图片

通过解密网站查看加密后字符串对应的字符
Python中socketserver及hashlib校验_第7张图片

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

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)

运行结果:
Python中socketserver及hashlib校验_第8张图片

通过解密网站查看加密后字符串对应的字符
Python中socketserver及hashlib校验_第9张图片

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

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)

运行结果:
Python中socketserver及hashlib校验_第10张图片

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

Python中socketserver及hashlib校验_第11张图片

网页无法进行反解

你可能感兴趣的:(python,python)