random: 随机数
'''
import random
random.random(0,1) :这个一直有一个争论,包含0或者不包含0的争论
random.randint[1,10]
random.uniform()
random.choice(item) 单列集合随机选择1个
random.sample(item,n) 单列集合随机选择n个
random.shuffle(item) 随机打乱单列集合
'''
序列化与反序列化:json | pickle | shelve
'''
json:json是一种有语法规范的字符串,用来存方数据的,完成各种语言之间的数据交互.使用josn序列化到文件,必须只有一个根,不然无法反 序列化,这个语言的数据类型相关
json数据支持的数据类型:dict(字典) list(列表) int(整型) 浮点(float) str(字符串) null(空,python中写None)
json字符串就是{存放双列信息}和[存放单列信息]的组合,且{}的key必须是str(字符串),并且要用" "包裹
注:除以上的类型以外,其他类型都不能出现,出现就不满足json格式,就不能序列化.真是个傲娇的语言
pickle:可以存各种数据类型
shelve:流
dump():将对象直接序列化成字符串
dumps():将对象序列化成字符串存储到文件中 json模块的此方法要注意ensure_ascii
loads() :将字符串转换为对象 默认跟当前文件被解释器执行的编码走
load():将文件中的字符串转换成对象
shelve对序列化文件操作dump与load进行封装
注:writeback允许序列化的可变类型(比如列表),可以直接修改值
一次文件流:open()和close(),在一次文件流里,他会存最后一个valuse的值
'''
加密:hashlib hmac
'''
不可逆加密:没有解密的加密的方式, 比如md5
解密方式:碰撞解密
加密的对象:用于传输的数据是字符串类型的数据
import hashlib
获取加密对象:lock = hashlib.md5()
添加加密数据:
加盐加密: 1.保证原数据过于简单,通过复杂的盐也可以提高解密难度
2.即使被碰撞解密成功,也不能直接识别盐与有效数据
import hashlib
lock_obj = hashlib.md5()
lock_obj.update(b'goodgoodstudy')
lock_obj.update(b'123')
lock_obj.update(b'daydayup')
res = lock_obj.hexdigest()
print(res)
import hmac
# hmac.new(arg) # 必须提供一个参数
cipher = hmac.new('加密的数据'.encode('utf-8'))
print(cipher.hexdigest())
cipher = hmac.new('前盐'.encode('utf-8'))
cipher.update('加密的数据'.encode('utf-8'))
print(cipher.hexdigest())
cipher = hmac.new('加密的数据'.encode('utf-8'))
cipher.update('后盐'.encode('utf-8'))
print(cipher.hexdigest())
cipher = hmac.new('前盐'.encode('utf-8'))
cipher.update('加密的数据'.encode('utf-8'))
cipher.update('后盐'.encode('utf-8'))
print(cipher.hexdigest())
'''
shutil