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 爬虫图片简单实现
Jun 01 Python
如何在python中使用selenium的示例
Dec 26 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
pandas对指定列进行填充的方法
Apr 11 Python
python递归实现快速排序
Aug 18 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python实现n个数中选出m个数的方法
Nov 13 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
python和go语言的区别是什么
Jul 20 Python
python执行js代码的方法
May 13 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版(2)
2006/10/09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
jQuery常用选择器详解
2017/07/17 jQuery
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
element中的$confirm的使用
2020/04/26 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python迭代dict的key和value的方法
2018/07/06 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python画双y轴图像的示例代码
2019/07/07 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
大学四年规划书范文
2013/12/27 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
开发房地产协议书
2014/09/14 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers