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 相关文章推荐
python实现对一个完整url进行分割的方法
Apr 29 Python
Python3 replace()函数使用方法
Mar 19 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
Python unittest框架操作实例解析
Apr 13 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Python实现某论坛自动签到功能
2019/08/20 Python
Python实现自动访问网页的例子
2020/02/21 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
英国现代绅士品牌:Hackett
2017/12/17 全球购物
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
贷款委托书怎么写
2014/08/02 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
趣味运动会赞词
2015/07/22 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
JavaScript异步操作中串行和并行
2021/11/20 Javascript