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)
SHA1

 

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))
hmac

 

posted @ 2019-11-07 11:26  无夜。  阅读(88)  评论(0编辑  收藏  举报