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()
进程:
进程调度:
先来先服务
短作业优先调度算法
时间片轮转法
多级反馈队列
进程:是计算机中最小的资源分配单位
进程和程序:
程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念
进程:是程序再处理机上的一次执行过程
并发:并发是指资源有限的情况下,两者交替轮流使用资源
并行:在多核处理器中,在同一个精确的时间片刻,有不同的程序在执行

同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成
异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行
day 26 初识进程,验证客户端合法性的更多相关文章
- socketserver和socket的补充(验证客户端合法性)
一.socket的补充 1.参数 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 参数说明: family 地址系 ...
- Python之路(第三十四篇) 网络编程:验证客户端合法性
一.验证客户端合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现. 客户端验证的总的思路是将服务端随机产生的指定位数的字节发送到客 ...
- python之路----验证客户端合法性
验证客户端链接的合法性 import os import hmac import socket secret_key = b'egg' sk = socket.socket() sk.bind(('1 ...
- socketv 验证客户端链接的合法性,socketserver
补充: send()与sendall() 在python socket编程中,有两个发送TCP的函数,send()与sendall(),区别如下: socket.send(string[, flags ...
- Day 35 验证客户端的合法性+socketserver
一 .getpeername和getsoketopt的用法 服务器端代码 import socket sk =socket.socket() sk.bind(('127.0.0.1',9000)) s ...
- python_网络编程hmac模块验证客户端的合法性
hmac模块: 比较两个函数的密钥是否一致: import hmac import os msg = os.urandom(32) #生成32位随机字节码 def wdc(): key = b'wdc ...
- 总结day26 ----验证客户端的合法性,已经操作系统,进程的简单初识别
前情提要 一:验证客户端的合法性: # .需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # # 我现在要做的事情 # 写一个server端 # 写一个clie ...
- Python之socketserver模块和验证客户端链接的合法性
验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_ke ...
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)
先来回顾一下昨天的内容 黏包现象粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全相 ...
随机推荐
- const 关键字总结
int a; const int* p = &a; == int const * p = &a; 表示通过p不能修改a的值. const int a; int *p = &a ...
- pycharm添加版本控制
- postman 的基础使用
https://blog.csdn.net/fxbin123/article/details/80428216
- (Java)怎么去掉字符串数组中重复的值?
String fdbs = "WXB,WXA,FDA,WXB"; String[] str = fdbs.split(","); Set set = new H ...
- map和hasmap的区别
MAP接口的定义如下: public interface MAP< k , v> Key 到value 的映射 ,Key不允许重复,每一个key只能映射一个value . Has ...
- 创建maven项目前的准备工作
第二步: 在maven中的settings.xml文件中指定 2.1 本地仓库:计算机中一个文件夹,自己定义是哪个文件夹. 2.1 示例语法 <localRepository>D:/mav ...
- 学JS的心路历程-Promise(一)
今天在进入Promise代码之前,我们先来用个例子来解释Promise是什么. 未来值 假设我们今天来到快餐店,点了一个汉堡,付钱给店员. 点了餐点并付费,可以理解为我们发送了一个请求,希望得到一个回 ...
- JAVA 课堂测试
package ACC; /*信1705-2班 * 20173623 * 赵墨涵 */ public class Account { String accountID; String accountn ...
- ssl 的jks 生成工具
https://www.myssl.cn/tools/merge-jks-cert.html 通过key 私钥 ,和公钥pem 生成jks
- sudo su到root或到其它用户报这种错
一般不会出现这种情况,除非你进入的这个目录已经被删了.然后切换用户就找不到这个目录,所以报错. 这种情况下我们只要去到一个正常的目录就好了,比如:cd ~ 然后再切换,ok.