python--hmac
检测一下客户端是否合法,不依靠登录认证.这样即使知道服务端ip和端口,客户端也不能随便就连接服务端
实现机制是在服务端中设置了密钥,借用了hmac os 两个模块
import socket
import os #导入os模块
import hmac #导入hmac模块
sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
secret_key=b'zzy123' #设置密钥
def check_conn(conn):
"""
验证客户端密钥
:param conn: 客户端连接conn
:return: True or Flase 验证客户端的密钥和服务端是否一致
"""
msg=os.urandom(32) #随机获取一个32位的bytes类型的字符串随机验证码
conn.send(msg) #把这个字符串随机验证码发给客户端
h=hmac.new(secret_key,msg) #对密钥和随机验证码进行hmac加密,类似于把密钥加盐,得到一个加密对象
digest=h.digest() #获取加盐密钥
clint_secret_key=conn.recv(1024) #接收客户端传来的密钥
return hmac.compare_digest(digest, clint_secret_key) #比较客户端的密钥和服务端是否一致
conn, addr = sk.accept() #建立socket连接
ret=check_conn(conn) #调用函数,得到返回值True or Flase
if ret: #如果是True,则是合法的客户端
print('合法的客户端')
sk.close()
else:
print('不合法的客户端')
sk.close()
serve
"""
总结:检测一下客户端是否合法
1:hmac 加密模块 功能和用法类似hashlip
2:h=hmac.new() 括号里放你想加密的内容secret_key等 得到的h加密对象
3:digest=h.digest() 得到最终的密钥digest
4:compare_digest() 对比密钥的内置函数,括号里放你要比较的两个密文
5:import os
os.urandom() 随机获取多少位的bytes类型的字符串
"""
import socket
import os
import hmac
sk=socket.socket()
secret_key=b'zzy123' #设置密钥
sk.connect(('127.0.0.1',8080))
ret=sk.recv(1024) #接收服务端发来的随机验证码
h=hmac.new(secret_key,ret) #把客户端发来的随机验证码和自己设置的密钥 用hmac加密
msg=h.digest() #获取加盐密钥
sk.send(msg) #把加盐密钥发给服务端
sk.close()
clint
python--hmac的更多相关文章
- Python——hmac
该模块在Python中实现 RFC 2104 中规范的 HMAC 算法. 目录 一.HMAC 对象 1. HMAC.update() 2. HMAC.digest() 3. HMAC.hexdiges ...
- php hash_hmac 与python hmac 区别
使用 HMAC 方法生成带有密钥的哈希值 hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = fal ...
- python hmac解密
import hmac def get_singa_true(timestamp): sha1 = hmac.new("d1b964811afb40118a12068ff74a12f4&qu ...
- python hmac 加密
python2 : key 是秘钥 类型为 str msg 要加密的文件 str digestmod 要加密的方式 python3: key 是秘钥 类型为 byte msg 要加密的文件 byte ...
- HMAC(Hash-based Message Authentication Code)实现原理
1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...
- python 内置模块之hashlib、hmac、uuid
一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- 【Python】 hash值计算 hashlib & hmac
hashlib & hmac *不是很清楚能不能把这种hash值取样算法称之为加密,但是似乎好像也是这么说的哈(非科班出身的野路子就是没这种基本知识的) ■ 基本用法 hashlib支持MD5 ...
- python模块:hmac
"""HMAC (Keyed-Hashing for Message Authentication) Python module. Implements the HMAC ...
- Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
随机推荐
- Linux利器 strace [看出process呼叫哪個system call]
Linux利器 strace strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必 ...
- Oracle分区表之分区范围扫描(PARTITION RANGE ITERATOR)与位图范围扫描(BITMAP INDEX RANGE SCAN)
一.前言: 一开始分区表和位图索引怎么会挂钩呢?可能现实就是这么的不期而遇:比如说一张表的字段是年月日—‘yyyy-mm-dd’,重复率高吧,适合建位图索引吧,而且这张表数据量也不小,也适合转换成分区 ...
- 【WPF】一些拖拽实现方法的总结(Window,UserControl)
原文:[WPF]一些拖拽实现方法的总结(Window,UserControl) 原文地址 https://www.cnblogs.com/younShieh/p/10811456.html 前文 本文 ...
- php 单例模式封装MySQL类
class MysqlConn { //定义一个私有的静态属性,用来存放实例化的对象 private static $dbcon; //定义一个私有的静态属性,用来存在数据库的连接 private s ...
- 2018-5-28-WPF-popup置顶
title author date CreateTime categories WPF popup置顶 lindexi 2018-05-28 09:58:53 +0800 2018-2-13 17:2 ...
- 记录一下list转map
Map<String,String> mapListStream = list.stream().collect(Collectors.toMap(key,value)):key对应key ...
- 2018CSS特效集锦牛逼
https://tympanus.net/codrops/2018/12/27/awesome-demos-from-2018/
- mongodb的学习 (1)
1. 启动服务 (1)在D盘下新建mongodb 文件夹,在mongodb 文件夹里面新建db; (2)win+R 启动cmd ,输入 `mongod --dbpath "D:/mongod ...
- springcloud feign增加熔断器Hystrix
1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...
- leetcood学习笔记-14*-最长公共前缀
笔记: python if not 判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...