加载中...

hashlib和getpass


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

文章作者: 无夜
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无夜 !
评论
  目录