zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    多级菜单 menu
    PHP 在线 编辑 解析
    [转]在PHP语言中使用JSON
    [转]SSIS ADO.NET vs OLEDB
    [转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性
    [转]SSIS高级转换任务—行计数
    [转]SSIS Recordset Destination
    [转]SSIS: By coding
    [转]SSIS cannot convert between unicode and non-unicode string
    [转]How to handle Failed Rows in a Data Flow
  • 原文地址:https://www.cnblogs.com/caiyongliang/p/13993750.html
Copyright © 2011-2022 走看看