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中使用Inotify监控文件实例
Feb 14 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
Python实现位图分割的效果
Nov 20 Python
Python语言内置数据类型
Feb 24 Python
Pandas-DataFrame知识点汇总
Mar 16 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 curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
信息管理专业推荐信
2013/10/29 职场文书
行政专员岗位职责
2014/01/02 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
邀请函格式范文
2015/02/02 职场文书
南京导游词
2015/02/03 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python