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 相关文章推荐
Python3里的super()和__class__使用介绍
Apr 23 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Python基础知识点 初识Python.md
May 14 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
keras输出预测值和真实值方式
Jun 27 Python
python中数字是否为可变类型
Jul 08 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python入门学习指南分享
2018/04/11 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
python实现处理mysql结果输出方式
2020/04/09 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
支教自我鉴定
2014/01/18 职场文书
节水口号标语
2014/06/19 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
整改报告格式
2014/11/06 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
医生辞职信范文
2015/03/02 职场文书
职称评定个人总结
2015/03/05 职场文书
《秋思》教学反思
2016/02/23 职场文书