python驗證客戶端的合法性

2021-08-28 04:09:18 字數 2153 閱讀 4894

python驗證客戶端的合法性 -client:

from socket import *

import hmac,os

secret_key=b'pengliang'

def conn_auth(conn):

'''驗證客戶端到伺服器的鏈結

:param conn:

:return:

'''msg=conn.recv(1)

h=hmac.new(secret_key,msg)

digest=h.digest()

conn.sendall(digest)

def client_handler(ip_port,bufsize=1024):

tcp_socket_client=socket(af_inet,sock_stream)

tcp_socket_client.connect(ip_port)

conn_auth(tcp_socket_client)

while true:

data=input('>>: ').strip()

if not data:continue

if data == 'quit':break

tcp_socket_client.sendall(data.encode('utf-8'))

respone=tcp_socket_client.recv(bufsize)

print(respone.decode('utf-8'))

tcp_socket_client.close()

if __name__ == '__main__':

ip_port=('127.0.0.1',8041)

bufsize=1024

client_handler(ip_port,bufsize)

python驗證客戶端的合法性 -server:

from socket import *

import hmac,os

secret_key=b'pengliang'

def conn_auth(conn):

'''認證客戶端鏈結

:param conn:

:return:

'''print('開始驗證新鏈結的合法性')

msg=os.urandom(1)

conn.sendall(msg)

h=hmac.new(secret_key,msg)

digest=h.digest()

respone=conn.recv(len(digest))

return hmac.compare_digest(respone,digest)

def data_handler(conn,buffer_size=1024): # 處理通訊迴圈

if not conn_auth(conn):

print('該鏈結不合法,關閉')

conn.close()

return

print('連線合法,開始通訊')

while true:

data=conn.recv(buffer_size)

if not data:break

conn.sendall(data.upper())

def server_handler(ip_port,bufsize,backlog=5): # 處理鏈結迴圈

'''只處理鏈結

:param ip_port:

:return:

'''tcp_socket_server=socket(af_inet,sock_stream)

tcp_socket_server.bind(ip_port)

tcp_socket_server.listen(backlog)

while true:

conn,addr=tcp_socket_server.accept()

print('新連線[%s:%s]' %(addr[0],addr[1]))

data_handler(conn,bufsize)

if __name__ == '__main__':

ip_port=('127.0.0.1',8041)

bufsize=1024

server_handler(ip_port,bufsize)

認證客戶端鏈結合法性(Python)

服務端 from socket import import hmac,os secret key b 123456io p defconn auth conn 認證客戶端鏈結 param conn return print 開始驗證新鏈結的合法性 msg os.urandom 32 產生32位隨機數...

認證客戶端的鏈結合法性

摘自 如果你想在分布式系統中實現乙個簡單的客戶端鏈結認證功能,又不像ssl那麼複雜,那麼利用hmac 加鹽的方式來實現 server.py coding utf 8 author linhaifeng from socket import import hmac,os secret key b li...

粘包 阻塞與非阻塞 驗證客戶端的合法性

tcp協議傳輸資料存在粘包現象,udp協議不存在粘包協議。1.1.1 什麼是粘包現象 1.1.2 解決粘包問題 b.再傳送報文 2.自定義協議2 專門用來做檔案傳送的協議 三次握手的過程在 中是由accept和connect共同完成的,具體的細節再socket中沒有體現出來 2.四次揮手 2.1 i...