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中几种操作字符串的方法的介绍
Apr 09 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
python实现逻辑回归的方法示例
May 02 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python版学生管理系统
Jan 10 Python
对Python中type打开文件的方式介绍
Apr 28 Python
Flask框架Flask-Login用法分析
Jul 23 Python
python中pip的安装与使用教程
Aug 10 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
python实现清屏的方法
2015/04/30 Python
python网络编程之文件下载实例分析
2015/05/20 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python默认参数调用方法解析
2020/02/09 Python
新闻学专业应届生求职信
2013/11/08 职场文书
自我评价的写作规则
2014/01/06 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
统计岗位职责
2014/02/21 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
双创工作实施方案
2014/03/26 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
大学生团日活动总结
2015/05/06 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs