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()
  • 相关阅读:
    CDQ分治
    K-th Number POJ
    A * B Problem Plus HDU
    Prime Test POJ
    数据结构
    FFT
    mysql查询出相同数据出现的次数,统计相同值的数量
    Laravel 清空配置缓存
    php7 数据导出Excel office 2011中文乱码问题
    PHP file_put_contents函数数据导出csv文件,屏幕字符串逗号分隔符
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/11417769.html
Copyright © 2011-2022 走看看