zoukankan      html  css  js  c++  java
  • day 26 初识进程,验证客户端合法性

    验证客户端合法性:

    # 1.需要认证
    # 程序和用户打交道的时候才会用到用户认证
    # 对所有的客户端进行统一的认证

    # 我现在要做的事情
    # 写一个server端
    # 写一个client端 特殊的 符合我的server端要求的代码

    # 1.client端不会被其他机器获取到
    # 2.即使客户端的代码不在别人手上 有心人仍然可以非法的访问我们的程序

    # hashlib
    # 密钥
    # 随机的字符串

    # server 密钥 发送一个随机字符串,密钥为盐,对随机字符串进行摘要 得到一个字符串结果
    # client 密钥 密钥为盐,对随机字符串进行摘要 得到一个字符串结果 将结果发送回server端
    import os
    import hmac
    import socket
    def auth(conn):
        s_key = b'echo'
        rand_b = os.urandom(32)
        conn.send(rand_b)
        obj = hmac.new(s_key, rand_b)
        res1 = obj.digest()
        res2 = conn.recv(1024)
        cmp_res = hmac.compare_digest(res1, res2)
        return True
    
    sk = socket.socket()
    sk.bind(('127.0.0.1', 10010))
    sk.listen()
    conn, addr = sk.accept()
    ret = auth(conn)
    if ret:
        print('合法连接')
        while True:
            msg = input('>>>.:')
            conn.send(msg.encode())
            if msg =='q':break
            msg1 = conn.recv(1024).decode()
            print(msg1)
    conn.close()
    sk.close()
    # 客户端
    import hmac
    import socket
    
    def auth(sk):
        s_key = b'echo'
        rand_b = sk.recv(32)
        obj = hmac.new(s_key, rand_b)
        res2 = obj.digest()
        sk.send(res2)
    
    sk = socket.socket()
    sk.connect(('127.0.0.1', 10010))
    auth(sk)
    while True:
        msg = sk.recv(1024).decode()
        print(msg)
        if msg == 'q':break
        msg1 = input('>>>>: ')
        sk.send(msg1.encode())
        if msg1 == 'q': break
    sk.close()

     进程:

    进程调度:

    先来先服务

    短作业优先调度算法

    时间片轮转法

    多级反馈队列

    进程:是计算机中最小的资源分配单位

    进程和程序:

    程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念

    进程:是程序再处理机上的一次执行过程

    并发:并发是指资源有限的情况下,两者交替轮流使用资源

    并行:在多核处理器中,在同一个精确的时间片刻,有不同的程序在执行

    同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成

    异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行

  • 相关阅读:
    Python命令行下退格、删除、方向键乱码问题解决(亲测有效)
    提取MySQL binlog中指定表的操作记录
    windows下面安装Python和pip终极教程
    day1-作业2
    day1-作业
    centos6.5python2.6环境下安装ansible
    安装inotify-tools,用inotifywait命令监听文件或目录的访问信息(自动同步文件夹)
    GitHub开源MySQL Online DDL工具gh-ost参数解析
    GitHub开源MySQL Online DDL工具gh-ost安装文档
    mysql磁盘IO%util 居高不下之RAID卡 BBU Learn Cycle周期
  • 原文地址:https://www.cnblogs.com/echo2019/p/10313900.html
Copyright © 2011-2022 走看看