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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
深入理解python try异常处理机制
Jun 01 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
python实现烟花小程序
Jan 30 Python
python语言元素知识点详解
May 15 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python docutils文档编译过程方法解析
Jun 23 Python
使用Python封装excel操作指南
Jan 29 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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
Windows下的PHP5.0详解
2006/11/18 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Python 正则表达式的高级用法
2016/12/04 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
中文专业自荐书
2014/06/29 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript