Python字符串hashlib加密模块使用案例


Posted in Python onMarch 10, 2020

主要用于对字符串的加密,最常用的为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)
#简便的写法:
pwd = input('请输入密码:').encode('utf-8')
result = hashlib.md5(pwd).hexdigest()
#加盐写法:
import hashlib
date = 'hahahah'
ojb = hashlib.md5((date+'123123123').encode('utf-8')).hexdigest()
print(ojb)

如果要避免撞库的行为,可以加盐将加密数值改为更加复杂的,这样破译起来更加不容易。 

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图片裁剪实例代码(如头像裁剪)
Jun 21 Python
Python读写docx文件的方法
May 08 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
Python如何读取文件中图片格式
Jan 13 Python
python可视化text()函数使用详解
Feb 11 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Python Selenium异常处理的实例分析
Feb 28 Python
pandas中关于apply+lambda的应用
Feb 28 Python
Python中求对数方法总结
Mar 10 #Python
Python标准库shutil模块使用方法解析
Mar 10 #Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 #Python
Python 生成VOC格式的标签实例
Mar 10 #Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 #Python
python opencv 检测移动物体并截图保存实例
Mar 10 #Python
You might like
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
动态添加js事件实现代码
2009/03/12 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
python函数形参用法实例分析
2015/08/04 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python有几个版本
2020/06/17 Python
django使用graphql的实例
2020/09/02 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
外贸业务员求职信范文
2013/12/12 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
处级干部考察材料
2014/12/24 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang