• 基与TCP实现简单的 安全性权限校验


    Server

    # ### 服务器
    import socket
    import hmac
    import os
    
    def auth(conn,secret_key):
        # 随机的32位二进制字节流
        res = os.urandom(32)
        # 把res发送给对方的服务器
        conn.send(res)
        # 用hmac加密字符串
        hm = hmac.new(secret_key.encode(),res)
        # 通过hexdigest返回32长度的十六进制字符串
        res_server = hm.hexdigest()
        print(res_server)
        
        # 接受客户端发过来的加密后的字符串
        res_cli = conn.recv(1024).decode("utf-8")
        
        if res_server == res_cli:
            print("该用户是合法的链接请求")
            return True
        else:
            print("该用户是非法的链接请求")
            return False
    
    # 创建对象
    sk = socket.socket()
    sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    sk.bind( ("127.0.0.1",9001) )
    sk.listen()
    conn,addr = sk.accept()
    
    # 收发数据的逻辑
    secret_key = "ig不牛逼"
    # 调用函数,验证权限
    res = auth(conn,secret_key)
    # 如果验证的结果是真的,就处理用户发送过来的请求,假的直接断开链接
    if res:
        print(conn.recv(1024).decode("utf-8"))
    
    conn.close()
    sk.close()

    Client

    # ### 客户端
    import socket
    import hmac
    
    def auth(sk,secret_key):
       # 收发数据的逻辑session
       msg = sk.recv(32)
       # 把key 和 msg 扔到new当中,进行加密
       hm = hmac.new(secret_key.encode(),msg)
       # 通过hexdigest把加密后的结果返回出来
       res_cli = hm.hexdigest()
       print(res_cli)
       # 把加密好的字符串在发送回原服务器
       sk.send(res_cli.encode())
    
    sk = socket.socket()
    sk.connect( ("127.0.0.1",9001) )
    
    secret_key = "ig不牛逼"
    # 调用函数,验证权限
    auth(sk,secret_key)
    # 向服务器发出下载的请求
    sk.send(b"download")
    
    # 关闭链接
    sk.close()
    基与TCP实现简单的 安全性权限校验

     

  • 相关阅读:
    2、基础知识点回顾
    jQuery事件二
    71、auth模块、bbs项目关系表
    PYthon-4.26作业
    PYthon-线程
    PYthon-4.23作业
    PYthon-4.15作业
    PYthon-4.9作业
    PYthon-4.7作业
    PYthon-3.31作业
  • 原文地址:https://www.cnblogs.com/max404/p/11845030.html
Copyright © 2020-2023  润新知