午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

Python 實現簡單的客戶端認證

瀏覽:99日期:2022-07-16 08:24:21

問題

你想在分布式系統中實現一個簡單的客戶端連接認證功能,又不想像SSL那樣的復雜。

解決方案

可以利用 hmac 模塊實現一個連接握手,從而實現一個簡單而高效的認證過程。下面是代碼示例:

import hmacimport osdef client_authenticate(connection, secret_key): ’’’ Authenticate client to a remote service. connection represents a network connection. secret_key is a key known only to both client/server. ’’’ message = connection.recv(32) hash = hmac.new(secret_key, message) digest = hash.digest() connection.send(digest)def server_authenticate(connection, secret_key): ’’’ Request client authentication. ’’’ message = os.urandom(32) connection.send(message) hash = hmac.new(secret_key, message) digest = hash.digest() response = connection.recv(len(digest)) return hmac.compare_digest(digest,response)

基本原理是當連接建立后,服務器給客戶端發送一個隨機的字節消息(這里例子中使用了 os.urandom() 返回值)。 客戶端和服務器同時利用hmac和一個只有雙方知道的密鑰來計算出一個加密哈希值。然后客戶端將它計算出的摘要發送給服務器, 服務器通過比較這個值和自己計算的是否一致來決定接受或拒絕連接。摘要的比較需要使用 hmac.compare_digest() 函數。 使用這個函數可以避免遭到時間分析攻擊,不要用簡單的比較操作符(==)。 為了使用這些函數,你需要將它集成到已有的網絡或消息代碼中。例如,對于sockets,服務器代碼應該類似下面:

from socket import socket, AF_INET, SOCK_STREAMsecret_key = b’peekaboo’def echo_handler(client_sock): if not server_authenticate(client_sock, secret_key): client_sock.close() return while True: msg = client_sock.recv(8192) if not msg: break client_sock.sendall(msg)def echo_server(address): s = socket(AF_INET, SOCK_STREAM) s.bind(address) s.listen(5) while True: c,a = s.accept() echo_handler(c)echo_server((’’, 18000))Within a client, you would do this:from socket import socket, AF_INET, SOCK_STREAMsecret_key = b’peekaboo’s = socket(AF_INET, SOCK_STREAM)s.connect((’localhost’, 18000))client_authenticate(s, secret_key)s.send(b’Hello World’)resp = s.recv(1024)

討論

hmac 認證的一個常見使用場景是內部消息通信系統和進程間通信。 例如,如果你編寫的系統涉及到一個集群中多個處理器之間的通信, 你可以使用本節方案來確保只有被允許的進程之間才能彼此通信。 事實上,基于 hmac 的認證被 multiprocessing 模塊使用來實現子進程直接的通信。

還有一點需要強調的是連接認證和加密是兩碼事。 認證成功之后的通信消息是以明文形式發送的,任何人只要想監聽這個連接線路都能看到消息(盡管雙方的密鑰不會被傳輸)。

hmac認證算法基于哈希函數如MD5和SHA-1,關于這個在IETF RFC 2104中有詳細介紹。

以上就是Python 實現簡單的客戶端認證的詳細內容,更多關于Python 客戶端認證的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产视频97 | 亚洲毛毛片 | 亚洲欧美另类在线 | av国产在线观看 | 久久久69 | 亚洲精品免费在线观看 | 91av在线播放 | 国产欧美一区二区三区在线观看视频 | 久久久久综合 | 最新国产 | 暖暖爱爱视频 | 国产精品v欧美精品v日韩 | 无套内谢大学处破女www小说 | 日本成人免费在线视频 | 黄色日韩视频 | 在线观看国产黄色 | 婷婷射| 国产另类自拍 | 免费黄色在线 | 成人公开免费视频 | 污片网站在线观看 | 精品美女久久 | 欧美日韩综合在线观看 | 亚洲图片日韩 | 久久中文娱乐网 | 91日日| 午夜小影院| 欧美毛片视频 | 天天干天天爱天天操 | 波多野结衣一二区 | 妹子色综合 | 国产18照片色桃 | 96sao| 深夜做爰性大片108式 | 蜜桃臀av | 成人激情视频 | 中国av在线播放 | 成人小视频免费在线观看 | 午夜av影院 | 伊人综合视频 | 国产三级精品三级观看 |