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中的reduce内建函数使用方法指南
Aug 31 Python
举例讲解Python中is和id的用法
Apr 03 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
python取代netcat过程分析
Feb 10 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP开发注意事项总结
2015/02/04 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
Python中实现三目运算的方法
2015/06/21 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
人民教师的自我评价分享
2014/02/21 职场文书
人事经理岗位职责
2014/04/28 职场文书
说明书格式及范文
2014/05/07 职场文书
新生入学欢迎词
2015/01/26 职场文书
小学班主任个人总结
2015/03/03 职场文书
公司借条范本
2015/05/25 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
教师教育心得体会
2016/01/19 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS