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('正常的客户端通信') # 验证通过 则执行其他程序
明文进行加密python教程时也可以用 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)
天之涯,海之角,吾与money天荒地老。




















