zoukankan      html  css  js  c++  java
  • 认证客户端连接合法性

    服务端代码:

     1 from socket import *
     2 import os, hmac
     3 
     4 secret_key = b'hello world'
     5 
     6 
     7 def coon_handle(coon):
     8     '''判断是否为合法客户端'''
     9     num = os.urandom(32)
    10     coon.sendall(num)
    11     h = hmac.new(secret_key, num, digestmod='md5')
    12     digest = h.digest()
    13     data = coon.recv(len(digest))
    14     return hmac.compare_digest(digest, data)
    15 
    16 
    17 def data_job(coon):
    18     while True:
    19         data = coon.recv(1024)
    20         print(data.decode())
    21         coon.sendall(data.upper())
    22 
    23 
    24 def data_handle(ip_port, buffer_size):
    25     tcp_server = socket(AF_INET, SOCK_STREAM)
    26     tcp_server.bind(ip_port)
    27     tcp_server.listen(buffer_size)
    28     while True:
    29         coon, addr = tcp_server.accept()
    30         print('开始验证新连接的合法性')
    31         try:
    32             if coon_handle(coon):
    33                 print('合法接入')
    34                 data_job(coon)
    35             else:
    36                 print('非法接入')
    37                 coon.close()
    38                 continue
    39         except Exception as f:
    40             print(f)
    41             continue
    42 
    43 
    44 if __name__ == '__main__':
    45     ip_port = (('127.0.0.1', 8080))
    46     buffer_size = 1024
    47     data_handle(ip_port, buffer_size)

    服务端代码:

     1 from socket import *
     2 import hmac
     3 
     4 secret_key = b'hello world'
     5 tcp_client = socket(AF_INET, SOCK_STREAM)
     6 tcp_client.connect(('127.0.0.1', 8080))
     7 print('连接服务器成功,正在验证。。。。')
     8 msg = tcp_client.recv(1024)
     9 h = hmac.new(secret_key, msg, digestmod='md5')
    10 tcp_client.sendall(h.digest())
    11 while True:
    12     ms = input('亲输入信息')
    13     tcp_client.sendall(ms.encode())
    14     data = tcp_client.recv(1024)
    15     print(data.decode())
  • 相关阅读:
    Distinct Substrings(spoj 694)
    Musical Theme
    Milk Patterns(poj 3261)
    Repeated Substrings(UVAlive 6869)
    喵星球上的点名(bzoj 2754)
    滑雪与时间胶囊(bzoj 2753)
    莫比乌斯函数之和(51nod 1244)
    欧拉函数之和(51nod 1239)
    数表(bzoj 3529)
    欧拉函数模板
  • 原文地址:https://www.cnblogs.com/ch2020/p/12567820.html
Copyright © 2011-2022 走看看