zoukankan      html  css  js  c++  java
  • 验证客户端的合法性:

    通常会用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()

  • 相关阅读:
    算法初探
    OIer数学相关
    算法初探
    MySQL事务
    MySQL多表查询
    数据库的设计
    winform选择文件夹
    获取上次打开目录
    C#拆分中文和数字字符串
    uCharts如何设置双Y轴,左侧一个右侧一个,数据源与对应的Y轴绑定
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9401508.html
Copyright © 2011-2022 走看看