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:\code\SH_fullstack_s1\day18\上节课复习','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、调用类,产生程序中的对象