SocketServer模块,hmac模块验证client合法性
hmac模块:
1.模块初识:
import hmac
# h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes
# 密文 = h.digest()
# hmac.compare_digest() #括号内传另外一个密文,看是否相等 h = hmac.new(b'secret',b'')
digest = h.digest()
print(digest)
#>>>> b'\xa4<\r\xf8\xec0\x7f\x8ao\xec\xa7(\xf7[t\xfb' h = hmac.new(b'secret',b'')
digest2 = h.digest()
print(hmac.compare_digest(digest,digest2)) #返回true
hmac模块初识
2.使用hmac模块,验证client端的合法性
import os
import hmac
import socket
secret_key = b'wwl'
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
def check_client(conn):
msg = os.urandom(32)
conn.send(msg)
h = hmac.new(secret_key,msg)
digest = h.digest()
client_digest = conn.recv(1024)
return hmac.compare_digest(digest,client_digest) conn,addr = sk.accept()
res = check_client(conn)
if res:
print('合法的客户端')
conn.close()
else:
print('不合法的客户端')
conn.close()
sk.close()
server端-hmac
import socket
import hmac secret_key = b'wwl111'
sk = socket.socket()
sk.connect(('127.0.0.1',8080)) msg = sk.recv(1024)
h = hmac.new(secret_key,msg)
client_digest = h.digest()
sk.send(client_digest)
sk.close()
client端-hamc
socketserver模块:
解读socketserver源码 —— http://www.cnblogs.com/Eva-J/p/5081851.html
socketserver模块可以开启server端的多线程,让多个client端访问server端:
import socketserver
class MyServer(socketserver.BaseRequestHandler):
def handle(self):#原来socket写的程序里所有和conn有关的操作,都挪到handle方法里
#self.request#相当于conn #一旦客户端断开连接了,handle方法也应该结束
while True:
msg = self.request.recv(1024).decode('utf-8')
if msg == 'q':break
print(msg)
info = input('%s>>>> '%msg[:2])
self.request.send(info.encode('utf-8')) if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer)
server.serve_forever()
server端-socketserver
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',8080))
while True:
msg = input('>>>> ')
if msg == 'q':
break
sk.send(msg.encode('utf-8'))
ret = sk.recv(1024).decode('utf-8')
print(ret)
sk.close()
client端-socketserver
SocketServer模块,hmac模块验证client合法性的更多相关文章
- hashlib模块,hmac模块
6.11自我总结 1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.S ...
- 第十章、hashlib模块和hmac模块
目录 第十章.hashlib模块和hmac模块 一.hashlib模块 二.hash模块 第十章.hashlib模块和hmac模块 一.hashlib模块 hash是一种算法,接收传入的内容,经过运算 ...
- socketserver模块实现并发和连接合法性验证
一.socketserver模块 1.sockeserver的源码流程 2.简单的使用 socketserver服务端 import socketserver class MyServer(socke ...
- python_网络编程hmac模块验证客户端的合法性
hmac模块: 比较两个函数的密钥是否一致: import hmac import os msg = os.urandom(32) #生成32位随机字节码 def wdc(): key = b'wdc ...
- Python学习日记(三十二) hmac检验客户端的合法性和socketsever模块
Hmac模块 其实这个模块类似hashlib模块,它能将一些重要的信息通过算法加密成密文,让信息更具有安全性. 关于hmac加密算法的了解:它的全名是哈希运算消息认证码(Hash-based Mess ...
- socketserver和socket的补充(验证客户端合法性)
一.socket的补充 1.参数 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 参数说明: family 地址系 ...
- 铁乐学Python_Day35_Socket模块3和hmac模块
验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂, 那么可以利用hmac+加盐的方式来实现. 例1:简单的服务端如下 #!/usr/bin/env ...
- Python3 hashlib模块和hmac 模块(加密)
hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512等常用算法 MD5加密 ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
随机推荐
- fastjson java类、字符串、jsonObject之前的转换
json对象转成json字符串 JSONObject json = new JSONObject(); json.put("page",1); json.put("pag ...
- MySQL Backup mysqldump备份流程学习
我们都知道MySQL逻辑备份工具mysqldump可以保证备份数据的一致性,但是它是怎么保持一致性的? 本文不讨论mysqldump具体的选项和用法,一直对mysqldump的工作机制梳理的不太清楚, ...
- 重写select样式
select {/*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/border: solid 1px #000; /*很关键:将默认的select选择框样式清除*/appeara ...
- Mysql模糊查询Like传递参数的语句
set @keyWord='我的': select * from tblcontent where content like CONCAT('%',@keyWord,'%')
- MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not provided by any .service files的错误
MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not prov ...
- [ Python ] OpenGL
pyOpenGL Installation Package Version------------------- -------numpy 1.14.2 PyOpenGL 3.1.0 PyOpenGL ...
- Kali密码攻击之——离线攻击工具
在线密码攻击在渗透测试中很重要,但对于测试过程中得到的哈希,加密数据,又需要离线破解工具辅助解决 Creddump套件 kali下离线攻击工具中的Cache-dump,lsadump,pwdump,均 ...
- 无需激活直接同步登入discuz,php代码(直接可用)
<?php /** * 抽奖 * @param int $total */ function getReward($total=1000) { $win1 = floor((0.12*$tota ...
- 关闭jtag保留swd
串行线JTAG 配置 (Serial wire JTAG configuration) 位26:24 这些位只能由软件写( 读这些位,将返回未定义的数值) ,用于配置SWJ和跟踪复用功能的I/O ...
- Numpy 数据类型和基本操作
Numpy 数据类型 bool 用一位存储的布尔类型(值为TRUE或FALSE) inti 由所在平台决定其精度的整数(一般为int32或int64) int8 整数,范围为128至127 int1 ...