hashlib和getpass
hashlib模块
hashlib是摘要模块,通常用来做加密算法,它是不可逆的。
使用方法:
1. 导入hashlib模块
1. 创建MD5对象
1. 输入要加密的值
1. 获取加密后的文本
使用函数示例:
import hashlib
def get_md5(data):
obj = hashlib.md5() # 创建md5对象
obj.update(data.encode('utf-8')) # 进行加密,加密之前要先把字符串转为bytes类型
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))