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编写暴力破解FTP密码小工具
Nov 19 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
Java及python正则表达式详解
Dec 27 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
基于python生成英文版词云图代码实例
May 16 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 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生成自己的LOG文件
2006/10/09 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
tensorflow自定义激活函数实例
2020/02/04 Python
python 弧度与角度互转实例
2020/04/15 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
软件测试常见笔试题
2012/02/04 面试题
给学校建议书范文
2014/05/13 职场文书
初中同学会活动方案
2014/08/22 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
个人更名证明
2015/06/23 职场文书
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS