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使用多线程不断刷新网页的方法
Mar 31 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 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
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python实现周期方波信号频谱图
2018/07/21 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
python如何绘制疫情图
2020/09/16 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
Europcar意大利:汽车租赁
2019/07/07 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
公司前台接待岗位职责
2013/12/03 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
自荐信的格式
2014/03/10 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
病危通知书样本
2015/04/17 职场文书
Python中如何处理常见报错
2022/01/18 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python