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

常用模块和面向对象 类相关推荐

  1. Day07:常用模块,面向对象编程(对象类)及内置函数

    今日内容: 1.常用模块 2.面向对象编程(*****)     介绍面向对象编程     类     对象 3.内置函数 ------------------------------ 1.面向过程编 ...

  2. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记(8):常用模块之系统类模块(二)user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作.此处我们介绍一些user模块的 ...

  3. ansible笔记(7):常用模块之系统类模块

    ansible笔记(7):常用模块之系统类模块cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令.在了解cron模块的参数之前,先写出一些计划任务的示例,示例 ...

  4. day6 (常用模块和面向对象基础)

    一.常用模块 1.random 模块 import randomprint(random.random()) # 大于0小于1之间的小数 #0.9721739019776539print(random ...

  5. Java基础(九)IDEA常用快捷键、常用模块操作

    九.IDEA常用快捷键.常用模块操作 1.IDEA常用快捷键 快捷键 功能效果 main/psvm.sout.- 快速键入相关代码 Ctrl + D 复制当行数据到下一行 Ctrl + Y 删除所在行 ...

  6. 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础

    06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍  Eclipse断点调试  基 ...

  7. Python面向对象---类的基本使用

    1.面向对象 类(class):是一种用来描述具有相同属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.一般定义在类中且在函数体之外. 方法:类中的函数 数据成员:类变量或者实例变 ...

  8. python最常用的编程方式是什么_python常用模块和对象编程

    1.摘要 常用模块 对象编程 领域模型 2.常用模块 2.1shutil模块 2.1.1 shutil.copyfileobj(fsrc, fdst[, length]) 1 f = open(&qu ...

  9. 模块ntdll中出现异常eaccessviolation_python常用模块

    常用模块 calendar time datetime timeit os shutil zip math string 上述所有模块使用理论上都应该先导入,string是特例 calendar,ti ...

最新文章

  1. centos7 中搭建gitlab
  2. python程序的原理_Python程序的执行原理(转)
  3. python利器怎么用-UliPad 初体验----python 开发利器
  4. 依赖注入_List_Set_Array类型的注入
  5. C# 依据KeyEventArgs与组合键字符串相互转换
  6. 一个注册为输入法的木马分析
  7. linux内核循环,模仿Linux内核kfifo实现的循环缓存
  8. 全国青少年编程等级考试scratch三级真题2019年3月(含题库答题软件账号)
  9. 如何用自己电脑做服务器,绑定域名建一个个人网站
  10. 蓝桥杯算法训练之印章
  11. 建立基于IP地址访问的网站
  12. 模版消息智能推送!我们教你发得更快更多更省
  13. 索骥馆-编程语言之 《C++精髓:软件工程方法》扫描版[PDF]
  14. EeePC各项硬件参数
  15. 一条线 理解SSH登录前因后果
  16. 性能测试利器 — 全链路监控工具Pinpoint安装教程(非docker版本)
  17. 开发登陆按钮(丛林战争项目)
  18. 微信授权登录(java实现)
  19. 求1+2+…+n的和不大于1000的最大自然数n
  20. oracle 分析函数 视频,ORACLE分析函数实战(Analytical Functions)_PART8

热门文章

  1. Python 进阶_OOP 面向对象编程_静态方法和类方法
  2. 组策略部署软件----将部署的软件分类
  3. SQL SERVER2005加密解密数据
  4. Linux远程软件xshell的使用
  5. 实验三 编程、编译、连接、跟踪
  6. 10.25 es问题
  7. Spring Cloud Config 配置中心
  8. js如何生成一个对象,并转化为json字符串
  9. HW2017笔试编程题
  10. HYSBZ - 2301 莫比乌斯反演