VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 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)
天之涯,海之角,吾与money天荒地老。

出处:https://www.cnblogs.com/caiyongliang/p/13993750.html

相关教程