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实现的Google IP 可用性检测脚本
Apr 23 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
Python分析学校四六级过关情况
Nov 22 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
python实现任意位置文件分割的实例
Dec 14 Python
python3 http提交json参数并获取返回值的方法
Dec 19 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
python实现三壶谜题的示例详解
Nov 02 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
全面了解python字符串和字典
2016/07/07 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
python实现单机五子棋
2020/08/28 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
签约仪式主持词
2014/03/19 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
诚实守信主题班会
2015/08/13 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
升职自荐书
2019/05/09 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers