hashlib模块,random模块,序列化

Posted 想54256

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashlib模块,random模块,序列化相关的知识,希望对你有一定的参考价值。

hashlib模块

######### md5 ########
hash = hashlib.md5()
hash.update(bytes(‘admin‘, encoding=‘utf-8‘))	# 或hash.update("admin".encode("utf-8"))
print(hash.hexdigest())		# 16进制
print(hash.digest())
 
 
######## sha1 ########
 
hash = hashlib.sha1()
hash.update(bytes(‘admin‘, encoding=‘utf-8‘))
print(hash.hexdigest())
 
######### sha256 ########
 
hash = hashlib.sha256()
hash.update(bytes(‘admin‘, encoding=‘utf-8‘))
print(hash.hexdigest())
 
 
######### sha384 ########
 
hash = hashlib.sha384()
hash.update(bytes(‘admin‘, encoding=‘utf-8‘))
print(hash.hexdigest())
 
######### sha512 ########
 
hash = hashlib.sha512()
hash.update(bytes(‘admin‘, encoding=‘utf-8‘))
print(hash.hexdigest())

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

######### md5 ########

hash = hashlib.md5(bytes(‘898oaFs09f‘,encoding="utf-8"))
hash.update(bytes(‘admin‘,encoding="utf-8"))
print(hash.hexdigest())

python内置还有另一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密

import hmac
 
h = hmac.new(bytes(‘898oaFs09f‘,encoding="utf-8"))
h.update(bytes(‘admin‘,encoding="utf-8"))
print(h.hexdigest())

random模块

random.random()		# 生成0~1之间的数

random.randint(1,8)		# 生成1~8之间的整数(包括8)

random.choice(‘hello‘)		# 生成随机字母

序列化

Python中用于序列化的两个模块

  • json     用于【字符串】和 【python基本数据类型】 间进行转换
  • pickle   用于【python特有的类型】 和 【python基本数据类型】间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

import json

data = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}

json.dumps(data)
# 将数据转换成pickle字符串(所有程序语言都认识,只能转换字典,列表等基本类型)

>> ‘{"k1": "v1", "k2": "v2"}‘


import pickle

data = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}

pickle.dumps(data)
# 将数据转换成pickle字符串(只有Python语言认识,可以转换python中的函数、类...)

>> b‘\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01X\x02\x00\x00\x00v1q\x02X\x02\x00\x00\x00k2q\x03X\x02\x00\x00\x00v2q\x04u.‘

将序列化后的字符串保存到文件中

data = {‘k1‘:‘v1‘}

import pickle

with open("abc123.txt",‘wb‘) as f:
	pickle.load(data,f)		# 将data中的数据保存到文件中

	
import json

with open("abc123.txt",‘w‘) as f:
	json.dump(data,f)		# 将data中的数据保存到文件中

 

以上是关于hashlib模块,random模块,序列化的主要内容,如果未能解决你的问题,请参考以下文章

python常用模块(random,hashlib,os,sys)

模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

模块1 time,random,os ,hashlib

configparser ,shelve ,hashlib,random模块

python内几种常用内置模块的介绍,包括time模块,datetime模块,random模块,os模块,sys模块,hashlib模块

python基础总结