目的:サーバーに接続するクライアントを決定します
#サーバー のインポートソケット インポートHMAC インポートOS SECRET_KEY =バイト(' トム'、エンコード= ' UTF-8 ' ) SK = socket.socket() sk.bind((' 127.0.0.1 '、8010 )) sk.listen() 接続し、ADDR = sk.accept() DEFのcheck_client(コネチカット州): "" " 暗号化されたHMACモジュールを使用 )(新しいバイトデータ型の場合 :PARAMコネティカット: :リターン:TrueまたはFalse " "" MSG = OS。 urandomの(32)#osモジュールよいランダム conn.send(MSG) H = hmac.new(SECRET_KEY、MSG) server_digest = h.digest() client_digest = conn.recv(1024 ) リターンhmac.compare_digest(server_digest、client_digest) RET = check_client(接続) IF RET: 印刷(' クライアントが正当なクライアントである' ) connect.close() 他: 印刷(' クライアントが正当なクライアントではない' ) connect.close() sk.close()
#クライアント インポートソケット インポートHMACの SECRET_KEY =バイト(' トム'、エンコード= ' UTF-8 ' ) SK = socket.socket() sk.connect((' 127.0.0.1 '、8010 )) MSG = sk.recv(1024 ) H = hmac.new(SECRET_KEY、MSG) client_server = h.digest() sk.send(client_server) sk.close()