Verify the legitimacy of the client link:
If you want to implement a simple client link authentication function in a distributed system, you can use hmac+salt to implement it.
import os import hmac import socket secret_key = ' Gu Qingqiu'.encode( ' utf- 8 ' ) sk = socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() conn,addr = sk.accept() while True: while True: try: random_num = os.urandom(32) #Random out 32-bit bytes conn.send(random_num) obj = hmac.new(secret_key,random_num) ret = obj.hexdigest () msg = conn.recv(1024).decode( ' utf-8 ' ) if ret == msg: print ( ' The link is valid ' ) else : print ( ' The link is invalid and will be disconnected ' ) conn.close() finally: break sk.close()
import hmac import socket secret_key = ' Gu Qingqiu'.encode( ' utf- 8 ' ) sk = socket.socket() sk.connect(('127.0.0.1',9000)) random_num = sk.recv (1024 ) obj = hmac.new(secret_key,random_num) ret = obj.hexdigest (). encode ( ' utf-8 ' ) sk.send (ret) sk.close()
socketserver:
import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): self.data = self.request.recv(1024).strip() # self.request 相当于conn print('{} wrote:'.format(self.client_address[0])) print(self.data) self.request.sendall(self.data.upper()) if __name__ == '__main__': socketserver.TCPServer.allow_reuse_address = True server = socketserver.ThreadingTCPServer(('127.0.0.1',9000),MyServer) server.serve_forever()
import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) sk.send(b'hello') sk.close()