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()
  • 相关阅读:
    go 学习成长之路
    多个ssh key 配置多个网址
    ubuntu 安装 gightingale
    关于open falcon 与nightingale 的一些调研
    kubeadm 命令简介
    windows kubectl 远程操作k8s
    ubuntu18.04 kuebadm 安装 k8s-1.15.9
    kubeadm 如何将节点加入集群
    centos7 kubeadm 搭建k8s
    docker 常用命令
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/11417769.html
Copyright © 2011-2022 走看看