Python网络编程——验证客户端的合法性[Python基础]

python

1、验证客户端的合法性

登录:只要有个性化设计的时候就需要登录

登录和合法性验证二选一,如果做登录的功能就不需要做合法性验证

server

import os

import socket

import hashlib

SECRET_KEY = b"yongliang" # 设置秘钥

def check_client(conn):

randbytes = os.urandom(32) # 随机产生一个32位的随机字节

conn.send(randbytes) # 将随机字节发送给client

# 服务端对随机字节进行hashlib动态加盐(秘钥)加密

md5 = hashlib.md5(SECRET_KEY)

md5.update(randbytes)

code = md5.hexdigest()

code_cli = conn.recv(32).decode("utf-8") # 接收client发来的加密后的字符串

return code == code_cli # 进行客户端验证 返回bool值

sk = socket.socket()

sk.bind(("127.0.0.1",9001))

sk.listen()

while True:

conn,addr = sk.accept()

if not check_client(conn):continue # 验证判断 如果得到False -->continue

print("进程正常的通信了") # 验证通过 执行其他程序

client

import os

import socket

import hashlib

SECRET_KEY = b"yongliang"

def check_client():

randbytes = sk.recv(32) # 接收服务端发送的32位的随机字节

# 客户端对随机字节进行hashlib动态加盐(秘钥)加密

md5 = hashlib.md5(SECRET_KEY)

md5.update(randbytes)

code = md5.hexdigest().encode("utf-8")

sk.send(code) # 将加密后的字符串发送到server

sk = socket.socket()

sk.connect(("127.0.0.1",9001))

check_client()

print("正常的客户端通信") # 验证通过 则执行其他程序

明文进行加密时也可以用 hmac 模块

import os

import hmac # 在加密内容基础上增加盐

SECRET_KEY = b"yongliang"

randbytes = os.urandom(32) # 随机产生一个32位的字节

mac = hmac.new(SECRET_KEY,randbytes) # 对随机字节进行动态加密

ret = mac.digest()

print(ret)

以上是 Python网络编程——验证客户端的合法性[Python基础] 的全部内容, 来源链接: utcz.com/z/530198.html

回到顶部