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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
python创建文件备份的脚本
Sep 11 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
django celery redis使用具体实践
Apr 08 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
基于python实现操作git过程代码解析
Jul 27 Python
Django mysqlclient安装和使用详解
Sep 17 Python
Django实现随机图形验证码的示例
Oct 15 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python sklearn分类决策树方法详解
Sep 23 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 HandlerSocket的使用
2011/05/02 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
php简单的上传类分享
2016/05/15 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
为Python程序添加图形化界面的教程
2015/04/29 Python
python使用opencv读取图片的实例
2017/08/17 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
DNA基因检测和分析:23andMe
2019/05/01 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
一月红领巾广播稿
2014/02/11 职场文书
小学安全教育材料
2014/02/17 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
建筑节能汇报材料
2014/08/22 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
党支部先进事迹材料
2014/12/24 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python