import模块

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()
    # 如果不一致,应立即关闭连接
原文地址:https://www.cnblogs.com/zengluo/p/12878558.html