python hmac模块验证客户端的合法性
hmac模块:
比较两个函数的密钥是否一致:
importhmac importos msg=os.urandom(32)#生成32位随机字节码 defwdc(): key=b'wdc'#密钥 ret=hmac.new(key,msg)#将字节码和key进行加密(必须都为bytes类型)创建一个对象ret digest=ret.digest()#消化 returndigest#返回消耗后的密文 defyhf(): key1=b'wdc'#密钥 ret1=hmac.new(key1,msg)#将字节码和key1进行加密(必须都为bytes类型)创建一个对象ret1 digest1=ret1.digest()#消化 returndigest1#返回消耗后的密文 wdc=wdc() yhf=yhf() result=hmac.compare_digest(wdc,yhf)#比较两个密文是否一致,返回Fales/True print(result)#输出结果
验证客户端合法性:
服务端:
importos importhmac importsocket secret_key=b'wdc'#密钥:必须为二进制编码 sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() defcheck_conn(conn): msg=os.urandom(32)#生成一个32位bytes类型随机码 conn.send(msg)#发送一个32位的随机字节码 h=hmac.new(secret_key,msg)#将密钥和生成的随机字节码匹配加密生成一个对象 digest=h.digest()#消化生成密文 client_digest=conn.recv(1024)#接收消息(客户端生成的密文) returnhmac.compare_digest(digest,client_digest)#比较服务端和接收的客户端的密文是否一致 conn,addr=sk.accept() res=check_conn(conn) ifres: print('合法的客户端') conn.close() else: print('不合法的客户端') conn.close() sk.close()
客户端:
importhmac importsocket secret_key=b'wdc'#密钥:必须为二进制编码 sk=socket.socket() sk.connect(('127.0.0.1',8080)) msg=sk.recv(1024)#接收信息(接收生成的32位字节码) h=hmac.new(secret_key,msg)#将密钥和生成的随机字节码匹配加密生成一个对象 digest=h.digest()#消化生成密文 sk.send(digest)#发送生成的密文 sk.close()
以上就是pythonhmac模块验证客户端的合法性的详细内容,更多关于pythonhmac模块的资料请关注毛票票其它相关文章!