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小程序
Aug 15 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
python搜索指定目录的方法
Apr 29 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
Python语言实现将图片转化为html页面
Dec 06 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
Python pip配置国内源的方法
Feb 14 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
python flask框架快速入门
May 14 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在文件指定行中写入代码的方法
2012/05/23 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python实现BackPropagation算法
2017/12/14 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Django框架models使用group by详解
2020/03/11 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
《商鞅南门立木》教学反思
2014/02/16 职场文书
经典商业广告词
2014/03/13 职场文书
小学生手册家长评语
2014/04/16 职场文书
法制宣传标语集锦
2014/06/25 职场文书
老乡聚会通知
2015/04/23 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
在职证明书模板
2015/06/15 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
高考升学宴主持词
2019/06/21 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis