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提取字典key列表的方法
Jul 11 Python
图解Python变量与赋值
Apr 03 Python
Python异常处理操作实例详解
May 10 Python
python3.5 email实现发送邮件功能
May 22 Python
python机器学习之神经网络实现
Oct 13 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
python 实现字符串下标的输出功能
Feb 13 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
python编写实现抽奖器
Sep 10 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php 缓存函数代码
2008/08/27 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
初识php MVC
2014/09/10 PHP
php中Ctype函数用法详解
2014/12/09 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
javascript常见用法总结
2014/05/22 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
python hook监听事件详解
2018/10/25 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
竞聘书格式及范文
2014/03/31 职场文书
一年级学生期末评语
2014/04/21 职场文书
施工单位安全责任书
2014/07/24 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
2015毕业寄语大全
2015/02/26 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书