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(“文件名”) 可以读出文件的字节 ,必须是文件。

读整篇文章,然后翻译

每次读出字节 一段一段进行编译
这两种运算得出的结果一样。

浙公网安备 33010602011771号