zoukankan      html  css  js  c++  java
  • day31-hmac模块检测客户端是否合法

    #如果客户端知道服务端的ip地址和端口,就可以连接服务端,信息不安全。
    #使用os.urandam随机生成32位bytes,然后hmac加密之后再发送给客户端。
    #server:
    import socket
    import hmac
    import os
    secret_key = b'daxiong'
    sk = socket.socket()
    sk.bind(('127.0.0.1',9002))
    sk.listen()
    conn,addr =sk.accept()
    
    def compare(conn):
        msg = os.urandom(32) #随机32位bytes,每次都不一样。
        conn.send(msg)       #把它当做验证码发出去
        h = hmac.new(secret_key,msg) #加密secret_key和验证码,得到加密的对象
        digest = h.digest()  #得到密文
        client_digest = conn.recv(1024) #接收client的密文
        return hmac.compare_digest(digest,client_digest) #对比密文和client的密文,并返回给compare(conn)
    ret = compare(conn)
    
    if ret:
        print('合法的客户端')
    else:
        print('非法客户端')
    
    conn.close()
    sk.close()
    
    #client:
    import socket
    import hmac
    sk = socket.socket()
    sk.connect(('127.0.0.1',9002))
    
    secret_key = b'daxiong' #这个密钥是约定好的。
    msg = sk.recv(1024)     #接收32位的bytes
    h = hmac.new(secret_key,msg)   #加密,得到h对象。
    digest = h.digest()            #密文
    sk.send(digest)
    
    sk.close()
  • 相关阅读:
    PHP基础1
    U2-Net网络学习笔记(记录)
    C++贪吃蛇游戏
    实习期间学习基础学习整理
    week 2020.1.10-2020.1.15
    week 2021.1.04-2021.1.08
    week 2020.12.21-2020.12.31
    周记 week 2020-12.14-12.18
    几种读取图片和标签的方法
    图像风格转换(Style Transfer | 风格迁移综述)
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/11417769.html
Copyright © 2011-2022 走看看