文件校验
1.基本用法
(1)创建一个md5算法的对象
(2)把要加密的字符串通过update更新到hs对象中运算
(3)获取32位16进制的字符串
2.加盐 (加key => Xboy_ 加一个关键字配合原字符串,让密码更加复杂,不容易破解)
3.动态加盐
4.sha算法
sha 算出来的十六进制的串是40位 加密稍慢 , 安全性稍高
md5 算出来的十六进制的串是32位 加密速度快,安全性一般
5.hmac
(1)hmac 加密算法更加复杂,不容易破解
(2)必须指定盐
服务器合法性校验
1.在不知道加密算法的时候,只知道密钥也没用
2.服务端1(公司)
import socket
import hmac
import hashlib
def auth(sk,secret_key):
# 处理权限验证的逻辑
msg = sk.recv(32)
hm = hmac.new(secret_key.encode(),msg)
res = hm.hexdigest()
print(res)
sk.send(res.encode("utf-8"))
secret_key = "芝麻开门"
sk = socket.socket()
sk.connect( ("127.0.0.1" , 9000) )
# 验证服务端
auth(sk,secret_key)
# 发送数据
sk.send("请求调用支付宝刷脸支付接口".encode("utf-8"))
sk.close()
3.服务端2(支付宝)
import socket
import hmac
import os
def auth(conn,secret_key):
# 随机产生32位二进制字节流
msg = os.urandom(32)
conn.send(msg)
hm = hmac.new(secret_key.encode(),msg)
res_serve = hm.hexdigest()
print(res_serve)
res_client = conn.recv(1024).decode("utf-8")
if res_client == res_serve:
print("是合法的连接用户")
return True
else:
print("是不合法的连接用户")
return False
sk = socket.socket()
sk.bind( ("127.0.0.1" , 9000) )
sk.listen()
# 三次握手
conn,addr = sk.accept()
# 设置密钥
secret_key = "芝麻开门"
res = auth(conn,secret_key)
# 权限的校验
if res:
print(conn.recv(1024).decode("utf-8"))
# 四次挥手
conn.close()
# 退换端口
sk.close()