hashlib和getpass
hashlib 模块
hashlib是摘要模块,通常用来做加密算法,它是不可逆的。
使用方法:
1. 导入hashlib模块
2. 创建MD5对象
3. 输入要加密的值
4. 获取加密后的文本
使用函数示例:
import hashlib def get_md5(data): obj = hashlib.md5() # 创建对象 obj.update(data.encode('utf-8')) # 进行加密 result = obj.hexdigest() # 获取结果 return result val = get_md5('123') print(val)
这个只是简单的加密,可以通过撞库来获取明文,这时我们就需要加盐:
示例:
import hashlib def get_md5(data): obj = hashlib.md5("sidrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8')) # 加盐,盐可以是任意字符 obj.update(data.encode('utf-8')) result = obj.hexdigest() return result val = get_md5('123') print(val)
同样的hashlib也有其它算法,像SHA系列,使用方法相同:
SHA1示例:
import hashlib def get_md5(data): obj = hashlib.sha1("sidrsicxwersdfsa".encode('utf-8')) # 只需要在创建对象时把MD5改为sha系列即可 obj.update(data.encode('utf-8')) result = obj.hexdigest() return result val = get_md5('123') print(val)
getpass模块
既然是密码,我们再来看一个关于输入密码让密码不显示的模块:getpass
使用:
import getpass pwd = getpass.getpass('请输入密码:') if pwd == '123': print('输入正确')
这个用pycharm是看不出来效果的,你用命令提示符就可以看出效果了。
hmac
在文件上传下载时关于文件校验建议使用:hmac
hmac得到的结果是bytes类型,可以直接用来传输,省略转码过程。
示例:
#!/usr/bin/evn python # -*- coding:utf-8 -*- import os import hmac secret_key = b'sfasdf' randseq = os.urandom(9) # 随机生成9位字符串,返回结果为bytes类型。生成的位数可以更改 h= hmac.new(secret_key,randseq) result = h.digest() print(result,len(result))