day28面向对象最后&剩余模块 MD5加密

 

导入一个(ppp)包 默认调用 __init__ 文件模块,可以在__init__包里建立起所有的包含在ppp包里的模块的联系,以后调用的时候直接调用__init__文件即可 

import ppp

 

代码规范开发

(跳过)

 

知识回顾:判断是不是迭代器

 

反射

 

 

实例化一个对象,可以用getattr(实例化名字,字符串) 这个字符串是指类里面的方法的名称一样的,可以为动静态。

这样就可以得到一个func函数名,暂且可以怎么理解。调用函数func()即可执行代码’

 

为了避免报错可以使用hasattr做条件,hasattr作用就是判断字符串是否合法是个布尔值类型,若字符串没有hasattr结果就是False

hasattr的用法和getattr的用法是相似的hasattr(实例化的名字,“”需要执行的方法“”)

在import sys模块在可以获取当前脚本的名字的两个方法:

sys.modules[__name__]

sys.modules["__main__"]

 

 

 可以在当前脚本下执行以字符串命名的某种方法

getattr(脚本名称,字符串的某种方法)

4种方法可以执行反射的类型:

都需要用getattr调用,hasattr和getattr是最佳拍档

1、类名调用属性或方法(静态(类)属性,静态方法和类方法)

2、对象名调属性或方法(对象属性,普通方法)

3、模块名调用属性或方法(变量,函数)

4、在自己的模块中调用属性和方法(变量,函数)

可以用getattr方法赋值

getattr(方法名,属性(字符串),字符串)

 

hashlib的md5密文加密用法:

打开hashlib模块

md_5obj = hashlib.md5().update(bytes"需要加密的内容",encoding ="utf-8")

print(md_5obj.hexdigest())

 如果需要加密的东西不是中文,前面需把bytes转换成b

用md5加密不管内容长度统一加密成32位

 

 

这张图片之前是加密“李李李李李杰杰杰杰杰” 和分开的取得的加密值是一样的结果

所以说md5不仅可以去加密文件,还可以验证文件的完整性

 

import hashlib

hashlib.md5().update(b"123",).hexdigest()

md5是单向的,只能摘要成密文,不能反解

破解方式就是 撞库 暴力破解,也就是一个一个去比对。所以说用户密码还是要设置的精密一些

 

 

也可以进行加言加密信息,也就是在hashlib.md5("这里加一句言"),弥补了为什么md5()括号为什么没有用还要加括号的疑惑。

 

还可以检验视频的完整性,按字节去读。

 

 

 

 

Os.path.getsize(“文件名”) 可以读出文件的字节 ,必须是文件。

 

 

 

读整篇文章,然后翻译

每次读出字节 一段一段进行编译

 

这两种运算得出的结果一样。

 

posted @ 2017-09-22 20:30  hello沃德  阅读(88)  评论(0)    收藏  举报