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学习笔记 下载
Feb 10 Python
python模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
django settings.py 配置文件及介绍
Jul 15 Python
python实现最小二乘法线性拟合
Jul 19 Python
python中使用while循环的实例
Aug 05 Python
如何基于Python批量下载音乐
Nov 11 Python
python实现在一个画布上画多个子图
Jan 19 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/05/10 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
php5与php7的区别点总结
2019/10/11 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
js单例模式的两种方案
2013/10/22 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
详解python中requirements.txt的一切
2017/03/03 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
详解Python 正则表达式模块
2018/11/05 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
python assert的用处示例详解
2019/04/01 Python
python实现自动化上线脚本的示例
2019/07/01 Python
animation和transition的区别
2020/10/12 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
关于环保的建议书
2014/05/12 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年手术室工作总结
2014/11/26 职场文书
被委托人身份证明
2015/08/07 职场文书