1.import hmac
import hmac # 替代hashlib模块的 #好处,简单 检测网络上的链接合法性的 # # h = hmac.new(b'alex_sb',os.urandom(32)) #b类型的key和随机字符串 # ret = h.digest() # # print(ret)
2.import hashlib
1.MD5对象 import hashlib #1。创建一个MD5对象 # obj = hashlib.md5() #加盐 obj = hashlib.md5(b'gfjkldfjgdirjfkdhkfdslkfdkggfdgdgr') #加盐 # 2 把要加密的内容给MD5 obj.update('小明'.encode('utf-8')) #必须是字节 # 3 获取密文 val = obj.hexdigest() print(val) #4cf350692a4a3bb54d13daacfe8c683b
2.md5加密2 import hashlib def my_md5(val): obj = hashlib.md5(b'5435435435435435435436djkfdjskhf') obj.update(val.encode('utf-8')) val = obj.hexdigest() return val #注册的时候,用MD5加密,存储的是加密的密文 username = input('请输入用户名') password = input('请输入密码') # cun = my_md5(password)# # print(cun) #4c730613e0a358151005dede6f9c3eff if username == '123' and my_md5(password) == '4c730613e0a358151005dede6f9c3eff': print('登录成功') else: print('失败')
3.检查客户端的合法性 client端 import socket import hashlib secret_key = b'alex_sb979' sk = socket.socket() sk.connect(('127.0.0.1',9001)) # 接收客户端发送的随机字符串 rand = sk.recv(32) # 根据发送的字符串 + secret key 进行摘要 sha = hashlib.sha1(secret_key) sha.update(rand) res = sha.hexdigest() #获取密文 # 摘要结果发送回server端 sk.send(res.encode('utf-8')) # 继续和server端进行通信 msg = sk.recv(1024) print(msg) server端 import os import socket import hashlib secret_key = b'alex_sb' sk = socket.socket() sk.bind(('127.0.0.1',9001)) sk.listen() conn,addr = sk.accept() # 创建一个随机的字符串 rand = os.urandom(32) # 发送随机字符串 conn.send(rand) # 根据发送的字符串 + secrete key 进行摘要 sha = hashlib.sha1(secret_key) sha.update(rand) res = sha.hexdigest() # 等待接收客户端的摘要结果 res_client = conn.recv(1024).decode('utf-8') # 做比对 if res_client == res: print('是合法的客户端') # 如果一致,就显示是合法的客户端 # 并可以继续操作 conn.send(b'hello') else: conn.close() # 如果不一致,应立即关闭连接