博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hmac检验客户端合法性
阅读量:7118 次
发布时间:2019-06-28

本文共 1396 字,大约阅读时间需要 4 分钟。

 

  1.服务端

# 验证客户端是否合法# 不依靠登陆认证# 当有一个客户端访问你的时候,建立了tcp后,server端主动发起一个数据,数据为想加密的bytes类型的数据。    # 客户端拿到要加密的bytes类型的数据,# import hmac     # 该模块与hashlib类似# import os## h = hmac.new()  # secret_key 需要一个密钥,与想要加密的bytes类型数据# content = h.digest()  # 拿到一个密文内容# hmac.compare_digest()   # 比较 ,密文与另外一个密文## print(os.urandom(32))   # 随机生成32个字节import socketimport hmac     # 该模块与hashlib类似import osdef check_conn(conn):    random_msg = os.urandom(32) # 得到一个随机的32个字节    conn.send(random_msg)   # 随机发送32个字节    h = hmac.new(secret_key, random_msg)    # 使用密钥secret_key对发送出去的32个随机字节进行加密得到一个hmac对象    digest = h.digest()     # 由hmac对象得到一个密文    client_digest = conn.recv(1024)    return hmac.compare_digest(digest, client_digest)  # 比较自己对32个字节加密后得到的密文,与客户端得到32个字节后加密得到的密文是否一样secret_key = b'egg'  # 密钥sk = socket.socket()sk.bind(('127.0.0.1', 8090))sk.listen()conn, addr = sk.accept()res = check_conn(conn)if res:    print('合法的客户端')    conn.send(b'OK')else:    print('不合法的客户端')    conn.send(b'NO')conn.close()sk.close()

  

  客户端

import socketimport hmacsecret_key = b'egg'sk = socket.socket()sk.connect(('127.0.0.1', 8090))msg = sk.recv(1024)     # 得到的是的32个随机字节h = hmac.new(secret_key, msg)   # 根据与服务端协商好的secret_key,对收到的32个随机字节进行加密,得到一个hmac对象digest = h.digest() # 由hmac对象得到了32随机字节与secret_key加密后的密文内容sk.send(digest) # 将密文内容发送到服务端print(sk.recv(1024).decode('utf-8'))sk.close()

 

转载于:https://www.cnblogs.com/whylinux/p/9749883.html

你可能感兴趣的文章
Python 生成器和迭代器
查看>>
Android WebView与JavaScript交互操作(Demo)
查看>>
Java设计模式 - 代理模式
查看>>
HDU 3533 Escape
查看>>
npm 相关
查看>>
大数据笔记-外存算法
查看>>
PHP WEBSERVICE NOWSDL模式 (不传参数,字符串参数,数组参数,对象参数) IOS 参数为XML...
查看>>
Maven学习总结(20)——Maven pom.xml配置再体会
查看>>
Mysql学习总结(42)——MySql常用脚本大全
查看>>
java知识库
查看>>
【面试题】-100盏灯
查看>>
HS-T912 adb 连接配置
查看>>
logger打印错误日志
查看>>
【Todo】【转载】Java中的锁机制2 - Lock
查看>>
node.js是什么
查看>>
让元素跟随鼠标移动
查看>>
Bootstrap是什么
查看>>
P1279 字串距离
查看>>
在Windows Server2016中安装SQL Server2016(转)
查看>>
oracel数据库ORA-28001: the password has expired
查看>>