hmac模块:

  比较两个函数的密钥是否一致:

import hmac
import os msg = os.urandom(32) #生成32位随机字节码 def wdc():
key = b'wdc' #密钥
ret = hmac.new(key,msg) #将字节码和key进行加密(必须都为bytes类型)创建一个对象ret
digest = ret.digest() #消化
return digest #返回消耗后的密文 def yhf():
key1 = b'wdc' #密钥
ret1 = hmac.new(key1,msg) #将字节码和key1进行加密(必须都为bytes类型)创建一个对象ret1
digest1 = ret1.digest() #消化
return digest1 #返回消耗后的密文 wdc = wdc()
yhf = yhf()
result = hmac.compare_digest(wdc,yhf) #比较两个密文是否一致,返回Fales/True
print(result) #输出结果

验证客户端合法性:

  服务端:

import os
import hmac
import socket
secret_key = b'wdc' #密钥:必须为二进制编码
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen() def check_conn(conn):
msg = os.urandom(32) #生成一个32位bytes类型随机码
conn.send(msg) #发送一个32位的随机字节码
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_conn(conn)
if res:
print('合法的客户端')
conn.close()
else:
print('不合法的客户端')
conn.close() sk.close()

  客户端:

import hmac
import socket
secret_key = b'wdc' #密钥:必须为二进制编码
sk = socket.socket()
sk.connect(('127.0.0.1',8080))
msg = sk.recv(1024) #接收信息(接收生成的32位字节码)
h = hmac.new(secret_key,msg) #将密钥和生成的随机字节码匹配加密生成一个对象
digest = h.digest() #消化生成密文
sk.send(digest) #发送生成的密文 sk.close()

python_网络编程hmac模块验证客户端的合法性的更多相关文章

  1. python_网络编程struct模块解决黏包问题

    为什么会出现黏包现象: 首先只有在TCP协议中才会出现黏包现象,是因为TCP协议是面向流的协议,在发送的数据传输的过程中还有缓存机制来避免数据丢失,因此,在连续发送小数据的时候,以及接收大小不符的时候 ...

  2. python_网络编程socketserver模块实现多用户通信

    服务端: import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): #在这个函数里面 ...

  3. Python_网络编程_socket()

    什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 详细资 ...

  4. 铁乐学Python_Day33_网络编程Socket模块1

    铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协 ...

  5. Day 35 验证客户端的合法性+socketserver

    一 .getpeername和getsoketopt的用法 服务器端代码 import socket sk =socket.socket() sk.bind(('127.0.0.1',9000)) s ...

  6. 总结day26 ----验证客户端的合法性,已经操作系统,进程的简单初识别

    前情提要 一:验证客户端的合法性: # .需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # # 我现在要做的事情 # 写一个server端 # 写一个clie ...

  7. python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  8. 2015/12/14 Python网络编程,TCP/IP客户端和服务器初探

    一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者 ...

  9. SocketServer模块,hmac模块验证client合法性

    hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 ...

随机推荐

  1. 项目中微信公众号调取支付控件demo

    微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 前端代码demo (JSP页面): ...

  2. Haystack--基于Django的全文检索框架

    好文章转载自:https://suguangti.cnblogs.com/p/11167097.html 阅读目录 1.什么是Haystack 2.安装 3.配置 4.处理数据 创建索引 5.设置视图 ...

  3. jqGrid取消所有选中

    // 获取所有选中行id var jqGridRowid=$("#jqGrid").jqGrid("getGridParam","selarrrow& ...

  4. 用gcd库函数求最大公约数

    如何直接调用库函数来求最大公约数呢? 1.首先看怎样求两个数的最大公约数 要注意gcd()前面是两个“_” !!! #include<bits/stdc++.h> using namesp ...

  5. vue+element-ui动态生成多级表头,并且将有相同字段下不同子元素合并为同一个

    element表头要多层生成,下一级表头数据源必须是当前表头的子一级,这样一层一层嵌套可以生成多层表头: 要把数据处理成这种类型的数据 var arr = []; for (var key in ob ...

  6. [转帖]关于DDR4内存颗粒、单双面、主板布线和双通道的那些事儿

    我们200期的期中测试大家都做了吧,今天我们放出了完整的答案,想知道自己错在哪儿的同学赶紧过去看哟=><这次期中考试你拿到满分了吗?没有就快去补习吧> https://www.exp ...

  7. ARTS第七周打卡

    Algorithm : 做一个 leetcode 的算法题 ////////////////////////////////////////////////////////////////////// ...

  8. 在VMware Workstation10下CentOS7虚拟机中创建与主机共享文件夹的详细步骤

    一.前言 在使用虚拟机时,常常需要与宿主计算机(以下简称为主机)操作系统交换文件,为此需要在虚拟机与主机之间建立共享文件夹. 二. 安装VMTools 要使用共享文件机制,必须首先安装VMTools. ...

  9. Admui相关第三方插件

    ace 版本:1.2.3au 官网:https://github.com/ajaxorg/ace-builds/ 许可:BSD 依赖:无 DataAPI:data-pulgin="ace&q ...

  10. 怎样理解this

    JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: ...