常用模块和面向对象 类
hashhlib 模块
什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值
2,hash的特征
(1)只要传人的内容一样,得到的1hash值一样=====》要用明文传输密码文件完整性校验
(2)不能由hash值反解成内容====》把密码做成hash值,不应该在网络传输明文密码
(3)只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
import hashlib
m=hashlib.md5()# m=hashlib.sha256()
m.update('hello'.encode('utf8'))
print(m.hexdigest()) #5d41402abc4b2a76b9719d911017c592
m.update('alvin'.encode('utf8'))
print(m.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af
m2=hashlib.md5()
m2.update('helloalvin'.encode('utf8'))
print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af
'''
注意:把一段很长的数据update多次,与一次update这段长数据,得到的结果一样
但是update多次为校验大文件提供了可能。
'''
上面算法虽然很联合,但是存在缺陷,通过撞库可以反解
import hashlib
所以我们要密码加盐来提高安全性
m=hashlib.md5()
m.update(‘天王盖地虎’.encode(‘utf-8’))
m.update(pwd.encode('utf-8'))
m.update('gdhgfhjhdj'.encode('utf-8'))
print('m.hexdigest()')
import hashlib
passwds=[
'alex3714',
'alex1313',
'alex94139413',
'alex123456',
'123456alex',
'a123lex',
]
def make_passwd_dic(passwds):
dic={}
for passwd in passwds:
m=hashlib.md5()
m.update(passwd.encode('utf-8'))
dic[passwd]=m.hexdigest()
return dic
def break_code(cryptograph,passwd_dic):
for k,v in passwd_dic.items():
if v == cryptograph:
print('密码是===>\033[46m%s\033[0m' %k)
cryptograph='aee949757a2e698417463d47acac93df'
break_code(cryptograph,make_passwd_dic(passwds))
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:
1 import hmac
2 h = hmac.new('alvin'.encode('utf8'))
3 h.update('hello'.encode('utf8'))
4 print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940
#要想保证hmac最终结果一致,必须保证:
#1:hmac.new括号内指定的初始key一样
#2:无论update多少次,校验的内容累加到一起是一样的内容
import hmac
h1=hmac.new(b'egon')
h1.update(b'hello')
h1.update(b'world')
print(h1.hexdigest())
h2=hmac.new(b'egon')
h2.update(b'helloworld')
print(h2.hexdigest())
h3=hmac.new(b'egonhelloworld')
print(h3.hexdigest())
'''
f1bf38d054691688f89dcd34ac3c27f2
f1bf38d054691688f89dcd34ac3c27f2
bcca84edd9eeb86f30539922b28f3981
'''
suproess模块(系统命令)
主要常用的三个
task list | findstr(过例找到)python
taskkill/?
python.exe (查看)12360 console
D:\code>taskkill /f/PID 12360 强制
configparser模块
(解析)
[section1] k1 = v1 k2:v2 user=egon age=18 is_admin=true salary=31
[section2] k1 = v1
读取
import configparser config=configparser.ConfigParser()
config.read('a.cfg')
#查看所有的标题 res=config.sections() #['section1', 'section2'] print(res)
#查看标题section1下所有key=value的key options=config.options('section1')
print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']
面向对象
面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,
即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。
类与对象
类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,
而类则是一系列对象相似的特征与技能的结合体
那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),
还是先有的人类这个概念,这个问题需要分两种情况去看
在现实世界中:先有对象,再有类
对象1:李坦克
特征:
学校=oldboy
姓名=李坦克
性别=男
年龄=18
技能:
学习
吃饭
睡觉
对象2:王大炮
特征:
学校=oldboy
姓名=王大炮
性别=女
年龄=38
技能:
学习
吃饭
睡觉
现实中的老男孩学生类 相似的特征: 学校=oldboy 相似的技能: 学习 吃饭 睡觉
在程序中,务必保证,先定义类,后使用
class OldboyStudent:
school='oldboy'
def learn(self):
print('is learning')
def eat(self):
print('is eating')
def sleep(self):
print('is sleeping')
#注意: 1.类中可以有任意python代码,这些代码在类定义阶段便会执行
2.因而会产生新的名称空间,用来存放类的变量名与函数名,
可以通过OldboyStudent.__dict__查看
3.对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但
python为我们提供专门的.语法 4.点是访问属性的语法,类中定义的名字,都是类的属性 #程序中类的用法 .:
专门用来访问属性,本质操作的就是__dict__ OldboyStudent.school
#等于经典类的操作OldboyStudent.__dict__['school'] OldboyStudent.school='Oldboy'
#等于经典类的操作OldboyStudent.__dict__['school']='Oldboy' OldboyStudent.x=1
#等于经典类的操作OldboyStudent.__dict__['x']=1 del OldboyStudent.x #等于经典类的操作OldboyStudent.__dict__.pop('x')
#程序中的对象 #调用类,或称为实例化,
得到对象 s1=OldboyStudent() s2=OldboyStudent() s3=OldboyStudent()
#如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,
这就用到了__init__ #注意:该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,
可以有任意代码,但一定不能有返回值 class OldboyStudent: ...... def __init__(self,name,age,sex):
self.name=name self.age=age self.sex=sex ......
s1=OldboyStudent('李坦克','男',18) #先调用类产生空对象s1,
然后调用OldboyStudent.__init__(s1,'李坦克','男',18)
s2=OldboyStudent('王大炮','女',38)
s3=OldboyStudent('牛榴弹','男',78) #程序中对象的用法 #执行__init__,s1.name='牛榴弹',
很明显也会产生对象的名称空间
s2.__dict__ {'name': '王大炮', 'age': '女', 'sex': 38}
s2.name #s2.__dict__['name'] s2.name='王三炮' #s2.__dict__['name']='王三炮'
s2.course='python' #s2.__dict__['course']='python' del s2.course #s2.__dict__.pop('course')
转载于:https://www.cnblogs.com/maojiang/p/8784616.html
常用模块和面向对象 类相关推荐
- Day07:常用模块,面向对象编程(对象类)及内置函数
今日内容: 1.常用模块 2.面向对象编程(*****) 介绍面向对象编程 类 对象 3.内置函数 ------------------------------ 1.面向过程编 ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记(8):常用模块之系统类模块(二)user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.此处我们介绍一些user模块的 ...
- ansible笔记(7):常用模块之系统类模块
ansible笔记(7):常用模块之系统类模块cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令.在了解cron模块的参数之前,先写出一些计划任务的示例,示例 ...
- day6 (常用模块和面向对象基础)
一.常用模块 1.random 模块 import randomprint(random.random()) # 大于0小于1之间的小数 #0.9721739019776539print(random ...
- Java基础(九)IDEA常用快捷键、常用模块操作
九.IDEA常用快捷键.常用模块操作 1.IDEA常用快捷键 快捷键 功能效果 main/psvm.sout.- 快速键入相关代码 Ctrl + D 复制当行数据到下一行 Ctrl + Y 删除所在行 ...
- 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础
06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍 Eclipse断点调试 基 ...
- Python面向对象---类的基本使用
1.面向对象 类(class):是一种用来描述具有相同属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.一般定义在类中且在函数体之外. 方法:类中的函数 数据成员:类变量或者实例变 ...
- python最常用的编程方式是什么_python常用模块和对象编程
1.摘要 常用模块 对象编程 领域模型 2.常用模块 2.1shutil模块 2.1.1 shutil.copyfileobj(fsrc, fdst[, length]) 1 f = open(&qu ...
- 模块ntdll中出现异常eaccessviolation_python常用模块
常用模块 calendar time datetime timeit os shutil zip math string 上述所有模块使用理论上都应该先导入,string是特例 calendar,ti ...
最新文章
- centos7 中搭建gitlab
- python程序的原理_Python程序的执行原理(转)
- python利器怎么用-UliPad 初体验----python 开发利器
- 依赖注入_List_Set_Array类型的注入
- C# 依据KeyEventArgs与组合键字符串相互转换
- 一个注册为输入法的木马分析
- linux内核循环,模仿Linux内核kfifo实现的循环缓存
- 全国青少年编程等级考试scratch三级真题2019年3月(含题库答题软件账号)
- 如何用自己电脑做服务器,绑定域名建一个个人网站
- 蓝桥杯算法训练之印章
- 建立基于IP地址访问的网站
- 模版消息智能推送!我们教你发得更快更多更省
- 索骥馆-编程语言之 《C++精髓:软件工程方法》扫描版[PDF]
- EeePC各项硬件参数
- 一条线 理解SSH登录前因后果
- 性能测试利器 — 全链路监控工具Pinpoint安装教程(非docker版本)
- 开发登陆按钮(丛林战争项目)
- 微信授权登录(java实现)
- 求1+2+…+n的和不大于1000的最大自然数n
- oracle 分析函数 视频,ORACLE分析函数实战(Analytical Functions)_PART8