hmac简单socket验证
来源:互联网 发布:水量伺服器 知乎 编辑:程序博客网 时间:2024/06/05 22:43
python cookbook 3rd.pdf
13.9.1 问题
你想在分布式系统中实现一个简单的客户端连接认证功能,又不想像 SSL 那样的复杂。import hmacimport osfrom socket import socket, AF_INET, SOCK_STREAMdef 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)) print(hmac.compare_digest(digest, response)) return hmac.compare_digest(digest, response)secret_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(('', 20000))
client.py
from socket import socket, AF_INET, SOCK_STREAMimport hmacdef 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)secret_key = b'peekaboo's = socket(AF_INET, SOCK_STREAM)s.connect(('localhost', 20000))client_authenticate(s, secret_key)s.send(b'Hello World')resp = s.recv(1024)print(resp)s.send(b'kitty')print (s.recv(1024))
0 0
- hmac简单socket验证
- Hmac简单理解与应用
- HMAC
- HMAC
- hmac
- Bouncy castle HMAC 消息验证码
- MD5-hmac密钥验证算法的简要介绍
- golang 中的md5 、hmac、sha1算法的简单实现
- java socket (-) 简单socket
- WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute
- 简单验证
- 简单验证码验证
- 验证socket能否连接
- HMAC-MD5
- Openssl-HMAC
- HMAC算法
- HMAC简介
- HMAC算法
- vue中引用jQuery
- android反射(reflect)笔记(一)
- Eclipse下搭建Maven Servlet3.0环境
- 【Natural Language Processing】跨语言情感分析(NLP&CC 2013)
- android开发使用SQLite数据库
- hmac简单socket验证
- Android内存优化总结&实践
- 另一个程序正在使用此文件,进程无法访问
- 解决opencv无法在图片上添加中文的问题。
- Java面向对象设计模式(三)——单例模式
- 使用Webpack创建vue的tab选项
- 解决iOS第三方SDK与本地静态库之间重复的symbols问题
- 加密算法及概念
- Boost.Interprocess使用手册翻译之六:同步机制(Synchronization mechanisms)