python hmac模块验证客户端的合法性


Posted in Python onNovember 07, 2020

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模块验证客户端的合法性的详细内容,更多关于python hmac模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
Python适配器模式代码实现解析
Aug 02 Python
python根据文本生成词云图代码实例
Nov 15 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Python sorted对list和dict排序
Jun 09 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 Python
python自动化测试通过日志3分钟定位bug
Nov 20 Python
django中websocket的具体使用
Jan 22 Python
python如何利用paramiko执行服务器命令
Nov 07 #Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 #Python
如何使用Django Admin管理后台导入CSV
Nov 06 #Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 #Python
python两种获取剪贴板内容的方法
Nov 06 #Python
用python写一个带有gui界面的密码生成器
Nov 06 #Python
python如何编写类似nmap的扫描工具
Nov 06 #Python
You might like
php URL验证正则表达式
2011/07/19 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
validator验证控件使用代码
2010/11/23 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
Node.js模块加载详解
2014/08/16 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
python读取二进制mnist实例详解
2017/05/31 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
法学毕业生自我鉴定
2013/11/08 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
杜甫草堂导游词
2015/02/03 职场文书
Redis基本数据类型List常用操作命令
2022/06/01 Redis