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中的os.path路径模块中的操作方法总结
Jul 07 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
Python脚本实时处理log文件的方法
Nov 21 Python
Django自定义分页效果
Jun 27 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
Python跳出多重循环的方法示例
Jul 03 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
python实现图片转字符画的完整代码
Feb 21 Python
快速一键生成Python爬虫请求头
Mar 04 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在Web开发领域的优势
2006/10/09 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
python中函数默认值使用注意点详解
2016/06/01 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
python脚本开机自启的实现方法
2019/06/28 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
在线课程:Skillshare
2019/04/02 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
师范生自荐信范文
2013/10/06 职场文书
2015年党员承诺书
2015/01/21 职场文书
司机个人年终总结
2015/03/03 职场文书
演讲开场白和结束语
2015/05/29 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers