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使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
python计算对角线有理函数插值的方法
May 07 Python
Python对象转JSON字符串的方法
Apr 27 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
python 实现任务管理清单案例
Apr 25 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python应用库大全总结
2018/05/30 Python
python爬取淘宝商品销量信息
2018/11/16 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
项目合作计划书
2014/01/09 职场文书
高三体育教学反思
2014/01/29 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
婚庆答谢词
2015/01/04 职场文书
土建施工员岗位职责
2015/04/11 职场文书
勇敢的心观后感
2015/06/09 职场文书
sql server 累计求和实现代码
2022/02/28 SQL Server