1. 程式人生 > >驗證客戶端的合法性:

驗證客戶端的合法性:

處理 .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=bdog
 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=bcat
 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()

驗證客戶端的合法性: