Python hashlib加密模块常用方法解析


Posted in Python onDecember 18, 2019

这篇文章主要介绍了Python hashlib加密模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

主要用于对字符串的加密,最常用的为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)

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

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 相关文章推荐
50行Python代码实现人脸检测功能
Jan 23 Python
Python用for循环实现九九乘法表
May 31 Python
python处理数据,存进hive表的方法
Jul 04 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
在python中做正态性检验示例
Dec 09 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Python基于unittest实现测试用例执行
Nov 25 Python
pytorch中index_select()的用法详解
Jan 06 Python
python 实现的车牌识别项目
Jan 25 Python
Python实现中值滤波去噪方式
Dec 18 #Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 #Python
Python字典底层实现原理详解
Dec 18 #Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 #Python
简单介绍django提供的加密算法
Dec 18 #Python
详解从Django Allauth中进行登录改造小结
Dec 18 #Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 #Python
You might like
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
PHP缓冲区用法总结
2016/02/14 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
详解Python如何获取列表(List)的中位数
2016/08/12 Python
简单了解python模块概念
2018/01/11 Python
Win8下python3.5.1安装教程
2020/07/29 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
python openCV自制绘画板
2020/10/27 Python
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
工厂车间标语
2014/06/19 职场文书
钳工实训报告总结
2014/11/04 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
通知怎么写?
2019/04/17 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python