zoukankan      html  css  js  c++  java
  • 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()
        # 如果不一致,应立即关闭连接
  • 相关阅读:
    elastic-job 新手指南
    最基本的区块链hello world(python3实现)
    python:函数的高级特性
    python高级特性:切片/迭代/列表生成式/生成器
    python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)
    python:爬虫入门
    python: 序列化/反序列化及对象的深拷贝/浅拷贝
    python中的zip、lambda、map操作
    python面向对象笔记
    RxJava2学习笔记(3)
  • 原文地址:https://www.cnblogs.com/zengluo/p/12878558.html
Copyright © 2011-2022 走看看