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模块的资料请关注毛票票其它相关文章!