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正则表达式操作指南(re使用)
Sep 06 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
python中的编码知识整理汇总
Jan 26 Python
使用Python实现简单的服务器功能
Aug 25 Python
python 判断网络连通的实现方法
Apr 22 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
python process模块的使用简介
May 14 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
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
JS二分查找算法详解
2017/11/01 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
使用Python生成XML的方法实例
2017/03/21 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python导入库的具体方法
2020/06/18 Python
python time()的实例用法
2020/11/03 Python
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
学前教育求职自荐信范文
2013/12/25 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
《春晓》教学反思
2014/04/20 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
人民调解协议书
2016/03/21 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS