• 验证客户端的合法性:


    通常会用hmac模块,和hashlib中的加盐加密算法类似

    服务器端提前和客户端约定好key  ,然后可以用os模块里的urandom来生成一组随机的字节

    把随机字节发送给客户端去加密处理 ,服务器加密处理后把得到的字节与客户端传过来的进行比较 相同为true则合法 不同则非法

    实现代码:

    服务端

     1 import os
     2 import hmac
     3 sk=socket.socket()
     4 sk.bind(('127.0.0.1',8080))
     5 sk.listen()
     6 key=b'dog'
     7 
     8 def check_conn(conn):
     9     msg=os.urandom(32)
    10     conn.send(msg)
    11     h=hmac.new(key,msg)
    12     digest=h.digest()
    13     client_digest=conn.recv(1024)
    14     ret=hmac.compare_digest(digest,client_digest)
    15     return ret
    16 
    17 conn,addr=sk.accept()
    18 result=check_conn(conn)
    19 if result:
    20     print('合法的客户端')
    21 else:
    22     print('不合法的客户端')
    23     conn.close()
    24 
    25 sk.close()

    客户端:

     1 import hmac
     2 sk=socket.socket()
     3 key=b'cat'
     4 sk.connect(('127.0.0.1',8080))
     5 msg=sk.recv(1024)
     6 h=hmac.new(key,msg)
     7 digest=h.digest()
     8 print(digest)
     9 sk.send(digest)
    10 
    11 sk.close()

  • 相关阅读:
    python torch安装下载地址
    anaconda windows常用命令
    VBA手册
    聊聊FLINK25631贡献
    适配若依框架的字典翻译
    ROS使用catkin_make编译
    Linux_软件安装和Dockerfile
    云计算_Dockerfile与代理
    CI/CD_Git大文件问题定位和排查
    C++_标准库和第三方库
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9401508.html
Copyright © 2020-2023  润新知