检测一下客户端是否合法,不依靠登录认证.这样即使知道服务端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的更多相关文章

  1. Python——hmac

    该模块在Python中实现 RFC 2104 中规范的 HMAC 算法. 目录 一.HMAC 对象 1. HMAC.update() 2. HMAC.digest() 3. HMAC.hexdiges ...

  2. php hash_hmac 与python hmac 区别

    使用 HMAC 方法生成带有密钥的哈希值 hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = fal ...

  3. python hmac解密

    import hmac def get_singa_true(timestamp): sha1 = hmac.new("d1b964811afb40118a12068ff74a12f4&qu ...

  4. python hmac 加密

    python2 :  key 是秘钥 类型为 str msg 要加密的文件 str digestmod 要加密的方式 python3: key 是秘钥 类型为 byte msg 要加密的文件 byte ...

  5. HMAC(Hash-based Message Authentication Code)实现原理

    1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...

  6. python 内置模块之hashlib、hmac、uuid

    一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...

  7. Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  8. 【Python】 hash值计算 hashlib & hmac

    hashlib & hmac *不是很清楚能不能把这种hash值取样算法称之为加密,但是似乎好像也是这么说的哈(非科班出身的野路子就是没这种基本知识的) ■ 基本用法 hashlib支持MD5 ...

  9. python模块:hmac

    """HMAC (Keyed-Hashing for Message Authentication) Python module. Implements the HMAC ...

  10. Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

随机推荐

  1. Linux利器 strace [看出process呼叫哪個system call]

    Linux利器 strace strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必 ...

  2. Oracle分区表之分区范围扫描(PARTITION RANGE ITERATOR)与位图范围扫描(BITMAP INDEX RANGE SCAN)

    一.前言: 一开始分区表和位图索引怎么会挂钩呢?可能现实就是这么的不期而遇:比如说一张表的字段是年月日—‘yyyy-mm-dd’,重复率高吧,适合建位图索引吧,而且这张表数据量也不小,也适合转换成分区 ...

  3. 【WPF】一些拖拽实现方法的总结(Window,UserControl)

    原文:[WPF]一些拖拽实现方法的总结(Window,UserControl) 原文地址 https://www.cnblogs.com/younShieh/p/10811456.html 前文 本文 ...

  4. php 单例模式封装MySQL类

    class MysqlConn { //定义一个私有的静态属性,用来存放实例化的对象 private static $dbcon; //定义一个私有的静态属性,用来存在数据库的连接 private s ...

  5. 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 ...

  6. 记录一下list转map

    Map<String,String> mapListStream = list.stream().collect(Collectors.toMap(key,value)):key对应key ...

  7. 2018CSS特效集锦牛逼

    https://tympanus.net/codrops/2018/12/27/awesome-demos-from-2018/

  8. mongodb的学习 (1)

    1. 启动服务 (1)在D盘下新建mongodb 文件夹,在mongodb 文件夹里面新建db; (2)win+R 启动cmd ,输入 `mongod --dbpath "D:/mongod ...

  9. springcloud feign增加熔断器Hystrix

    1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...

  10. leetcood学习笔记-14*-最长公共前缀

    笔记: python if not   判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...