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 相关文章推荐
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
PyTorch学习笔记之回归实战
May 28 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
python requests使用socks5的例子
Jul 25 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 Python
Django前后端分离csrf token获取方式
Dec 25 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
Python函数对象与闭包函数
Apr 13 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入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP chop()函数讲解
2019/02/11 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
python3 简单实现组合设计模式
2020/07/02 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
怎样创建、运行java程序
2014/08/01 面试题
Unix/Linux开发面试题
2016/08/16 面试题
生物科学专业个人求职信范文
2013/12/07 职场文书
水电站项目建议书
2014/05/12 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
销售人员管理制度
2015/08/06 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers