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 04 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
讲解Python中if语句的嵌套用法
May 14 Python
Python中用max()方法求最大值的介绍
May 15 Python
Python中__init__.py文件的作用详解
Sep 18 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
通过代码实例了解Python sys模块
Sep 14 Python
python实现二分查找算法
Sep 18 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Pytorch 中net.train 和 net.eval的使用说明
May 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
Terran历史背景
2020/03/14 星际争霸
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php实现微信发红包
2015/12/05 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
PHP7修改的函数
2021/03/09 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
详解Vite的新体验
2021/02/22 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
python字符串string的内置方法实例详解
2018/05/14 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
学生拾金不昧表扬信
2014/01/21 职场文书
2015年组织部工作总结
2015/04/03 职场文书
离婚起诉书范本
2015/05/18 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript