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使用matplotlib绘制动画的方法
May 20 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
python+pyqt实现右下角弹出框
Oct 26 Python
使用python对excle和json互相转换的示例
Oct 23 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
python程序输出无内容的解决方式
Apr 09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
十个Python自动化常用操作,即拿即用
May 10 Python
python中数组和列表的简单实例
Mar 25 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代码实现支付宝批量付款
2015/12/24 PHP
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
详解python中requirements.txt的一切
2017/03/03 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python代码中怎么换行
2020/06/17 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
什么是.net
2015/08/03 面试题
大型活动策划方案
2014/01/12 职场文书
运动会稿件300字
2014/02/14 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
暑期社会实践证明书
2014/11/17 职场文书
初中语文教学研修日志
2015/11/13 职场文书
高中化学教学反思
2016/02/22 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
vue elementUI批量上传文件
2022/04/26 Vue.js