驗證客戶端的合法性:
阿新 • • 發佈:2018-08-01
處理 .com 得到 加密算法 提前 send class code 不同
通常會用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()
驗證客戶端的合法性: