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 相关文章推荐
python使用chardet判断字符串编码的方法
Mar 13 Python
python实现按行切分文本文件的方法
Apr 18 Python
基于python爬虫数据处理(详解)
Jun 10 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python实现的txt文件去重功能示例
Jul 07 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python scatter函数用法实例详解
Feb 11 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
一些让Python代码简洁的实用技巧总结
Aug 23 Python
Selenium浏览器自动化如何上传文件
Apr 06 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
详解Vue之事件处理
2020/07/10 Javascript
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
python爬虫请求头设置代码
2020/07/28 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
简短证婚人证婚词
2014/01/09 职场文书
体育专业自荐书
2014/05/29 职场文书
不错的求职信范文
2014/07/20 职场文书
警察群众路线整改措施
2014/09/26 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js