python驗證客戶端的合法性 -client:
from socket import *python驗證客戶端的合法性 -server: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)
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...