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之??碌某?? target=
Sep 12 Python
Python简单生成8位随机密码的方法
May 24 Python
使用Python读取大文件的方法
Feb 11 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python交互界面的退出方法
Feb 16 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python实现连连看游戏
Feb 14 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
Numpy数组的广播机制的实现
Nov 03 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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校验ISBN码的函数代码
2011/01/17 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php英文单词统计器
2016/06/23 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
python常见的格式化输出小结
2016/12/15 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python修改字典键(key)的方法
2019/08/05 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Python celery原理及运行流程解析
2020/06/13 Python
python爬取音频下载的示例代码
2020/10/19 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
公司证明怎么写
2014/09/22 职场文书
公司合并协议书范本
2014/09/30 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
国际贸易实训报告
2014/11/05 职场文书
端午节活动总结报告
2015/02/11 职场文书
上学路上观后感
2015/06/16 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
OpenCV实现普通阈值
2021/11/17 Java/Android
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android