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之Import 模块
Oct 13 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
基于Python pip用国内镜像下载的方法
Jun 12 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
python 模拟登录B站的示例代码
Dec 15 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php中变量及部分适用方法
2008/03/27 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php的hash算法介绍
2014/02/13 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
JS常用函数使用指南
2014/11/23 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
对python中大文件的导入与导出方法详解
2018/12/28 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
《少年王冕》教学反思
2014/04/11 职场文书
解放思想演讲稿
2014/09/11 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python
微信小程序调用python模型
2022/04/21 Python