Python字符串hashlib加密模块使用案例


Posted in Python onMarch 10, 2020

主要用于对字符串的加密,最常用的为MD5加密:

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)
#简便的写法:
pwd = input('请输入密码:').encode('utf-8')
result = hashlib.md5(pwd).hexdigest()
#加盐写法:
import hashlib
date = 'hahahah'
ojb = hashlib.md5((date+'123123123').encode('utf-8')).hexdigest()
print(ojb)

如果要避免撞库的行为,可以加盐将加密数值改为更加复杂的,这样破译起来更加不容易。 

import hashlib
def get_md5(data):
  obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
  obj.update(data.encode('utf-8'))
  result = obj.hexdigest()
  return result
val = get_md5('123') #这里放入要加密的字符串文字。
print(val)

案例:

说明:用户输入新建的用户名和密码,以MD5加密的形式存入文件中。再让用户输入用户名密码进行匹配。

#!/usr/bin/env python
# _*_ coding=utf-8 _*_
import hashlib
def get_md5(data):
  '''
  登录加密,将传入的密码进行加密处理,并返回值。
  :param data: 用户的密码
  :return: 返回MD5加密后的密码
  '''
  obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
  obj.update(data.encode('utf-8'))
  result = obj.hexdigest()
  return result
def seve_user(username,password):
  '''
  将加密后的密码和用户名进行保存,以| 来分割,文件为test.txt
  :param username: 需要创建的用户名
  :param password: MD5后的密码
  :return: 需要更改的地方,return判断是否保存成功。
  '''
  user_list = [username,get_md5(password)]
  lis = '|'.join(user_list)
  with open('test.txt',encoding='utf-8',mode='a')as f:
    f.write(lis+'\n')
def read_user(username,password):
  '''
  来判断用户登录所输入的用户名和是否正确。
  :param username: 用户输入的用户名
  :param password: MD5加密后的密码
  :return: 如果匹配返回True
  '''
  with open('test.txt',mode='r',encoding='utf-8') as f:
    for item in f:
      infomation = item.strip()
      user,pwd = infomation.split('|')
      if username == user and password == pwd:
        return True
while True:
  '''
  循环需要创建的用户
  '''
  user =input('请输入用户名:')
  if user.upper() == 'N':
    break
  pwd = input('请输入密码:')
  if len(user) and len(pwd) < 8:
   print('用户名密码不符合要求,请重新输入。')
  else:
    seve_user(user,pwd)
while True:
  '''
  循环用户登录
  '''
  user_name = input('请输入用户名:')
  password = input('请输入密码:')
  start_user = read_user(user_name,get_md5(password))
  if start_user:
    print('登录成功')
    break
  else:
    print('登录失败')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
Python列表(List)知识点总结
Feb 18 Python
python3.6生成器yield用法实例分析
Aug 23 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
python基于property()函数定义属性
Jan 22 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
Python调用shell命令常用方法(4种)
May 11 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
Python中求对数方法总结
Mar 10 #Python
Python标准库shutil模块使用方法解析
Mar 10 #Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 #Python
Python 生成VOC格式的标签实例
Mar 10 #Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 #Python
python opencv 检测移动物体并截图保存实例
Mar 10 #Python
You might like
PHP导入导出Excel代码
2015/07/07 PHP
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
Python绘制KS曲线的实现方法
2018/08/13 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
如何通过python实现全排列
2020/02/11 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
python实现三种随机请求头方式
2021/01/05 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
介绍一下grep命令的使用
2015/06/12 面试题
便利店投资的创业计划书
2014/01/12 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
宾馆客房管理制度
2015/08/06 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB