1、hashlib
1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值
2、hash值的特点是:
2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码
2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
import hashlib m=hashlib.md5() m.update('hello'.encode('utf-8')) m.update('world'.encode('utf-8')) m.update('egon'.encode('utf-8')) print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5 import hashlib m=hashlib.md5() m.update('h'.encode('utf-8')) m.update('e'.encode('utf-8')) m.update('lloworld'.encode('utf-8')) m.update('egon'.encode('utf-8')) print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5 import hashlib m=hashlib.md5() with open(r'D:codeSH_fullstack_s1day18上节课复习','rb') as f: for line in f: m.update(line) hv=m.hexdigest() print(hv) #f2a3a94efd0809e8a9c5ac8794c4bb2d 953cd74a08f4fbb7e69a4bda8dfad056 密码加盐 import hashlib pwd='alex3714' m=hashlib.md5() m.update('一行白鹭上青天') m.update(pwd.encode('utf-8')) m.update('天'.encode('utf-8')) m.update('小雨一米五'.encode('utf-8')) print(m.hexdigest()) import hashlib m=hashlib.md5() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0 m=hashlib.sha256() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af m=hashlib.sha512() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60
强制加密
import hmac m=hmac.new('天王盖地虎,小鸡炖模块'.encode('utf-8')) m.update('alex3814'.encode('utf-8')) print(m.hexdigest())
2、subprocess模块
import subprocess import time time.sleep(500) # dos命令 # tasklist | findstr python # taskkill /? #D:code>tasklist | findstr python # python.exe 12360 Console 1 11,024 K # # D:code>taskkill /F /PID 12360 # linux系统(了解) # ps aux | grep python # kill -9 PID import os while True: cmd=input('>>>: ').strip() if not cmd:continue # print('%s run' %cmd) res=os.system(cmd) network.send(res) import os res=os.system('dixCVr') print('运行结果:',res) import subprocess obj=subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) print(obj) res1=obj.stdout.read() print('正确结果1111: ',res1) res2=obj.stdout.read() print('正确结果2222: ',res2) #只能取一次,取走了就没有了 res2=obj.stderr.read() print('错误结果:',res2.decode('gbk'))
3、configparser模块
import configparser config=configparser.ConfigParser() config.read('my.ini') # secs=config.sections() # print(secs) # print(config.options('egon')) # age=config.get('egon','age')` # age=config.getint('egon','age') # print(age,type(age)) # salary=config.getfloat('egon','salary') # print(salary,type(salary)) b=config.getboolean('egon','is_beatifull') print(b,type(b))
4、面向对象编程
1、面向过程编程
核心是”过程“二字,过程指的是解决问题的步骤,即先干什么再干什么
基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式
优点:复杂的问题流程化、进而简单化
缺点:可扩展性差
2、面向对象
核心”对象“二字,对象指的是特征与技能的结合体,
基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一种
上帝式的思维方式
优点:可扩展性强
缺点:编程的复杂度高于面向过程
5、对象与类
'''' 1、类 对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体 2、在现实世界中:一定先有对象,后来随着人类文明的发展总结出的类 对象是具体存在的,而类只是一种抽象概念 3、在程序中,务必保证:先定义类,后调用类来产生对象 现实生活中的对象: 对象1: 特征: school="Oldboy" name="马冬梅" age=18 sex="female" 技能: 学习 选课 对象2: 特征: school="Oldboy" name="甜蜜蜜" age=21 sex="male" 技能: 学习 选课 对象3: 特征: school="Oldboy" name="原石开" age=22 sex="male" 技能: 学习 选课 现实生活中的老男孩学生类: 相同的特征 school="Oldboy" 相同的技能 学习 选课 ''' #1、程序中的类 class OldboyStudent: # 用变量表示特征 school="Oldboy" # 用函数表示技能 def learn(self): print('is learning...') def choose(self): print('choose course...') # print('======>') # 注意:在定义类的阶段会立刻执行类体内的代码,然后将产生的名字存放于类名称空间中 # print(OldboyStudent.__dict__) # print(OldboyStudent.__dict__['school']) # print(OldboyStudent.__dict__['learn']) # OldboyStudent.__dict__['learn'](123) # print(OldboyStudent.school) # OldboyStudent.__dict__['school'] # print(OldboyStudent.learn) # OldboyStudent.__dict__['learn'] # OldboyStudent.learn('xxx') # OldboyStudent.learn('xxx') OldboyStudent.country='China' OldboyStudent.school='偶的博爱' del OldboyStudent.country print(OldboyStudent.__dict__) # 2、调用类,产生程序中的对象