电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Python 實現簡單的客戶端認證

瀏覽:37日期: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 編程
相關文章:
主站蜘蛛池模板: 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | SRRC认证|CCC认证|CTA申请_IMEI|MAC地址注册-英利检测 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 定制防伪标签_防伪标签印刷_防伪标签厂家-510品保防伪网 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司| 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 河南凯邦机械制造有限公司| ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 退火炉,燃气退火炉,燃气热处理炉生产厂家-丹阳市丰泰工业炉有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 猎头招聘_深圳猎头公司_知名猎头公司 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 |